我目前正在尝试向我的应用添加一项功能,以便我可以允许我的用户编辑用于填充我的付款类中包含的列表视图的项目的数据。
每当我输入要进行的更改并按“接受”时,我的列表视图不会使用新编辑的数据进行更新。
以下是我的“添加付款”类的数据。
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 etC),否则它会使用iPaymentDay,iPaymentMonth,iPaymentYear等。
我最初尝试了几次,最初我使用String [] {“ITITLE}作为datab.update方法中的最后一个参数,但它无效。
编辑(27/8/13)
我已经尝试过bakriOnFire发布的代码,它会更新除项目标题之外的所有内容。
我也尝试将第3个参数更改为“null”。这使我可以编辑标题,但是它编辑了列表视图中的所有项目。
有人可以告诉我如何为列表视图更新项目的所有字段吗?感谢您发布的任何解决方案。
编辑(28/8/13)
编辑了标题。唯一不更新的列是第一列。
编辑(28/8/13)
添加了屏幕截图
第一张图片显示付款活动上的列表视图,第二张图片显示添加付款活动。
答案 0 :(得分:1)
update
中的第三个参数是为更新提供的过滤器,您将该值指定为 PTITLE 。它不会匹配任何东西,因为它是列名。
您正在尝试更新PTITLE等于sTitle的行,因此更新应为 -
datab.update("PaymentTable", vals, "PTITLE='"+sTitle+"'", null);
我不确定这是不是你想做的,但希望它可能会给你一些暗示。