android - 无法为我的 ListView 更新数据

标签 android sqlite user-interface android-sqlite

我目前正在尝试向我的应用程序添加一项功能,以便我可以允许我的用户编辑用于填充我的 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)

添加了屏幕截图

List View in the Payments Activity

Add Payments activity

第一个图像显示付款 Activity 的 ListView ,第二个图像显示添加付款 Activity 。

最佳答案

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

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

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

关于android - 无法为我的 ListView 更新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18445649/

相关文章:

java - Android - Talkback 在内容描述结束时宣布类类型。

android - 回收站 View 未正确更新

java - Android Studio 未显示内联错误

asp.net - 是否可以使用 ASP.NET 创建 .sqlite 和 .db 文件?

sql - 如何在 SQLite 的 varchar 列中选择带有\u0000(空字符)的行?

iOS SqlCipher Sqlite Simulator 好的,在设备上部署错误

python - 多窗口 Pygame

python - 将标准输出(打印)命令打印到扩展名为 .pyw 的 tkinter 窗口

android - 摆脱 4.1 上的状态栏

android - 如何从 Gallery 迁移到 Horizo​​ntalScrollView & ViewPager?