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适配器类在哪里??