1

我目前正在尝试向我的应用程序添加一项功能,以便我可以允许我的用户编辑用于填充列表视图项目的数据,该列表视图包含在我的 Payments 类中。

每当我输入我希望进行的更改并按接受时,我的列表视图都不会使用新的编辑数据进行更新。

下面是我的 Add Payments 类的数据。

    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 方法会将提醒日/月/年等转换为字符串版本(sReminderDay/Month/Year 等),否则它使用 iPaymentDay、iPaymentMonth、iPaymentYear 等。

我已经尝试了几次,最初我使用 String[]{"ITITLE} 作为 datab.update 方法中的最后一个参数,但它不起作用。

编辑 (27/8/13)

我已经尝试了 bakriOnFire 发布的代码,它会更新除项目标题之外的所有内容。

我还尝试将第三个参数更改为“null”。这使我可以编辑标题但是它编辑了我的列表视图中的所有项目。

有人可以告诉我如何为我的列表视图更新项目的所有字段吗?感谢您发布的任何解决方案。

编辑 (28/8/13)

编辑了标题。唯一不更新的列是第一列。

编辑 (28/8/13)

添加了屏幕截图

付款活动中的列表视图

添加付款活动

第一张图显示了付款活动的列表视图,第二张图显示了添加付款活动。

4

1 回答 1

1

中的第三个参数update是为更新提供的过滤器,您将其值指定为PTITLE。它不会匹配任何东西,因为它是列名。您正在尝试更新 PTITLE 等于 sTitle 的行,因此更新应为 -

datab.update("PaymentTable", vals, "PTITLE='"+sTitle+"'", null);

我不确定这是否是你想要做的,但希望它能给你一些提示。

于 2013-08-26T13:53:42.930 回答