我目前正在尝试向我的应用程序添加一项功能,以便我可以允许我的用户编辑用于填充我的 ListView 项目的数据,该项目包含在我的付款类中。
每当我输入我希望进行的更改并按“接受”时,我的 ListView 不会更新为新编辑的数据。
下面是我的添加付款类的数据。
public void acceptClicked(View view)
{
failFlag = false;
checkEditTexts();
// if all are fine
if (failFlag == false)
{
MOSDatabase db = new MOSDatabase(this);
SQLiteDatabase datab = db.getWritableDatabase();
convertToString();
convertIntToString();
sPaymentDate = sPaymentYear + sPaymentMonth + sPaymentDay;
ContentValues vals = new ContentValues();
vals.put("PTITLE", sTitle);
vals.put("PDAY", sPaymentDay);
vals.put("PMONTH", sPaymentMonth);
vals.put("PYEAR", sPaymentYear);
vals.put("PA", sAmount);
vals.put("RMIN", sReminderMin);
vals.put("RHOUR", sReminderHour);
vals.put("RDAY", sReminderDay);
vals.put("RMONTH", sReminderMonth);
vals.put("RYEAR", sReminderYear);
vals.put("DATE", sPaymentDate);
if (checkbox.isChecked())
{
createAlarm();
}
if(itemInfo == false)
{
datab.insert("PaymentTable", null, vals);
datab.close();
}
if(itemInfo == true)
{
datab.update("PaymentTable", vals, "PTITLE", null);
}
Intent openReminder = new Intent("com.studentbudget.PAYMENTS");
startActivity(openReminder);
finish();
}
}
convertIntToString 方法将 reminderDay/Month/Year 等转换为字符串版本(sReminderDay/Month/Year 等),如果我要添加新付款,否则它使用 iPaymentDay、iPaymentMonth、iPaymentYear 等。
我已经尝试了几次,最初我使用 String[]{"ITITLE} 作为 datab.update 方法中的最后一个参数,但它没有用。
编辑(27/8/13)
我试过 bakriOnFire 发布的代码,它更新了除了项目标题之外的所有内容。
我还尝试将第三个参数更改为“null”。这允许我编辑标题,但是它编辑了我 ListView 中的所有项目。
谁能告诉我如何为我的 ListView 更新项目的所有字段?感谢发布的任何解决方案。
编辑(28/8/13)
编辑了标题。唯一不更新的列是第一列。
编辑(28/8/13)
添加了屏幕截图
第一个图像显示付款 Activity 的 ListView ,第二个图像显示添加付款 Activity 。
最佳答案
update
中的第三个参数是为更新提供的过滤器,您已将值指定为 PTITLE。它不会匹配任何东西,因为它是列名。
您正在尝试更新 PTITLE 等于 sTitle 的行,因此更新应为-
datab.update("PaymentTable", vals, "PTITLE='"+sTitle+"'", null);
我不确定这是否是你想要做的,但希望它能给你一些提示。
关于android - 无法为我的 ListView 更新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18445649/