
[英]How to update a value stored in an Object on “Update” button click - Android?
[英]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.