Android 编辑列表视图项中的数据

Android 编辑列表视图项中的数据,android,android-sqlite,Android,Android Sqlite,似乎找不到解决办法。我正在尝试编辑列表视图项中的数据。列表视图使用阵列适配器在列表视图中显示行中的数据 用户将手指放在要编辑的列表视图项上,会弹出一个包含“删除”或“编辑”选项的框。当用户单击以编辑数据时,该列表视图项中的数据应该转移到其他活动,用户可以在其中编辑数据。传输列表视图中最后一项的数据,而不是传输我要编辑的数据 这是下面的代码 public boolean onContextItemSelected(MenuItem item) { AdapterView.A

似乎找不到解决办法。我正在尝试编辑列表视图项中的数据。列表视图使用阵列适配器在列表视图中显示行中的数据

用户将手指放在要编辑的列表视图项上,会弹出一个包含“删除”或“编辑”选项的框。当用户单击以编辑数据时,该列表视图项中的数据应该转移到其他活动,用户可以在其中编辑数据。传输列表视图中最后一项的数据,而不是传输我要编辑的数据

这是下面的代码

    public boolean onContextItemSelected(MenuItem item) {
        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
        int position = info.position;
        switch (item.getItemId()) {
            case R.id.edit:
            {
                itemCheck = true;


                String bCheck = String.valueOf(itemCheck);

                iTitle = paymentTitle.get(position).toString();
                iPaymentDate = paymentDate.get(position).toString();
                iReminderDate = reminderDate.get(position).toString();
                iReminderTime = reminderTime.get(position).toString();
                iAmount = paymentVal.get(position).toString();



                if(iReminderDate == "No Date Set")
                {
                    iReminderDate = "";


                }
                else
                {
                    Intent reminder = new Intent(this, MyBroadcastReceiver.class);

                    PendingIntent.getBroadcast(this.getApplicationContext(), 1, reminder,
                            PendingIntent.FLAG_UPDATE_CURRENT).cancel();
                }


                if(iReminderTime == "No Time Set")
                {
                    iReminderTime = "";
                }


                Intent intent = new Intent(Payments.this, AddPayment.class);
                intent.putExtra("PID", pID);
                intent.putExtra("ITITLE", pTitle);
                intent.putExtra("PAYMENTDAY", pDay);
                intent.putExtra("PAYMENTMONTH", pMonth);
                intent.putExtra("PAYMENTYEAR", pYear);
                intent.putExtra("REMINDERDAY", rDay);
                intent.putExtra("REMINDERMONTH", rMonth);
                intent.putExtra("REMINDERYEAR", rYear);
                intent.putExtra("REMINDERHOUR", rHour);
                intent.putExtra("REMINDERMIN", rMin);
                intent.putExtra("IAMOUNT", pValue);
                intent.putExtra("ITEMCHECK", itemCheck);
                startActivity(intent);
                finish();
            }

                return true;
这是我数据库中的数据

C = readableDB.query("PaymentTable", new String[] { "_ID", "PTITLE", "PA", "PDAY", "PMONTH", "PYEAR", "RDAY", "RMONTH",
                "RYEAR", "RMIN", "RHOUR", "DATE"}, null, null, null, null, "DATE ASC");
这就是使用从数据库导入的数据创建变量的方式

            paymentID = C.getInt(C.getColumnIndex("_ID"));
            pTitle = C.getString(C.getColumnIndex("PTITLE"));
            pDay = C.getString(C.getColumnIndex("PDAY"));
            pMonth = C.getString(C.getColumnIndex("PMONTH"));
            pYear = C.getString(C.getColumnIndex("PYEAR"));
            rDay = C.getString(C.getColumnIndex("RDAY"));
            rMonth = C.getString(C.getColumnIndex("RMONTH"));
            rYear = C.getString(C.getColumnIndex("RYEAR"));
            rHour = C.getString(C.getColumnIndex("RHOUR"));
            rMin = C.getString(C.getColumnIndex("RMIN"));
            pValue = C.getString(C.getColumnIndex("PA"));

            pID = paymentID.toString();
这就是数组列表项的制作方式,用于在我的列表视图中显示数据

            reminderDateStr = rDay + "/" + rMonth + "/" + rYear;
            reminderTimeStr = rHour + ":" + rMin;
            paymentDateStr = pDay + "/" + pMonth + "/" + pYear;
            paymentTitleStr = pTitle;
            paymentValue = "£" + pValue;

            paymentTitle.add(paymentTitleStr);
            reminderTime.add(reminderTimeStr);
            paymentDate.add(paymentDateStr);
            reminderDate.add(reminderDateStr);
            paymentVal.add(paymentValue);

如果有人能告诉我如何让它工作,或者至少告诉我哪里出了问题,我应该尝试什么,我会非常感激。感谢所有试图帮助我的人。

我认为您可以使用OnItemClickListener来打开新活动,而不是使用onContextItemSelected。您可以这样声明:

yourListView.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {

        ListView lv = (ListView)parent;
        @SuppressWarnings("unchecked")
        ArrayAdapter<YourObject> adapter = ArrayAdapter<YourObject>)
        lv.getAdapter();
        YourObjectitem = adapter.getItem(position);

        // The rest of the code goes here
    }
});
yourListView.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
ListView lv=(ListView)父级;
@抑制警告(“未选中”)
ArrayAdapter适配器=ArrayAdapter)
lv.getAdapter();
YourObjectitem=adapter.getItem(位置);
//代码的其余部分在这里
}
});

很抱歉,当用户将手指放在列表视图项上时,会弹出一个浮动上下文菜单,因此我需要使用OnContextItemSelected适配器类在哪里??