繁体   English   中英

如何仅在 android 中的 SQLite 中使用按钮单击更新状态

[英]How to update only status on a Button click using in SQLite in android

我正在开发一个 SQLite 数据库。 我创建了一个表,其架构是:名称、图像、已选择。
消息的初始状态为 0。
我正在使用数据库上的setStatus()方法更新按钮单击时的状态。
但状态不会改变。
我想单击我的 Button 一次并将状态设置为 1,然后再次单击它以将状态重新设置为 0。

setStatus()函数如下所示:

 public int setStatus(People people) {
    SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    people.setStatus(1);
    values.put(STATUS, people.getStatus());

    return sqLiteDatabase.update(TABLE_PEOPLE, values, ID + "=?",
            new String[]{String.valueOf(people.getId())});

}

我的按钮点击事件

 btnBuildNow.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            peopleListSelected = new ArrayList<>();
            for (People people : peopleList) {
                if (people.getStatus()==1) {
                    db.setStatus(people);
                    peopleListSelected.add(people);
                }
            }
            if (peopleListSelected.size() > 0) {
                Intent intent = new Intent(BulidActivity.this, AlertList.class);
                intent.putExtra("arrayList", (Serializable) peopleListSelected);
                startActivity(intent);
            }
        }
    });

您没有传递要更新的行的 id(或者您想更新所有行?),未声明 ISSELECTED 变量。 我的意思是这一行:

sqldb.update(TABLE_PEOPLE, cv, "id=" + ISSELECTED, null);

我会这样写(现在我无法测试)。 我会将选定的 id 传递给更新方法的第三个参数(即 where 子句,请参阅文档: https : //developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html ):

public String setStatus(String selected) {
    SQLiteDatabase sqldb = this.getWritableDatabase();
    ContentValues cv = new ContentValues();
    cv.put("isselected", 1);
    sqldb.update(TABLE_PEOPLE, cv, "id=" + selected, null);
    sqldb.close();
    return "Anything you want";
}

另一种可能的解决方案是直接编写查询:

public String setStatus(String selected) {
        SQLiteDatabase sqldb = this.getWritableDatabase();
        sqldb.execSQL("UPDATE TABLE_PEOPLE SET ISSELECTED=1 WHERE id=" + selected);
        sqldb.close();
        return "Anything you want";
    }

编辑:对不起,我忘了告诉修改按钮点击事件,其中db.setStatus(); 被称为:使用db.setStatus(people.getId()); ,或类似的东西(people.id,或代表 people 对象的 id 的东西,如果有的话。如果它没有 id,你应该以某种方式从数据库中获取 id。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM