【发布时间】:2019-07-12 17:26:11
【问题描述】:
我有 2 个按钮,添加和编辑。添加按钮有效,项目被添加到列表视图并存储在 sqlite 数据库中。但是我的编辑按钮不起作用,当我按下编辑时,列表视图中的项目没有更新。我用谷歌搜索,但所有代码都使用 2 个活动或对话,这不是我想要的。我想在同一个主要活动中添加和编辑。
这是我的 sqlite 数据库
public class GetFitHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "restaurantlist.db";
private static final int SCHEMA_VERSION = 1;
public GetFitHelper(Context context) {
super(context, DATABASE_NAME, null, SCHEMA_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// Will be called once when the database is not created
db.execSQL("CREATE TABLE food_table ( _id INTEGER PRIMARY KEY
AUTOINCREMENT, addFood TEXT, addCalories TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int
newVersion) {
// Will not be called until SCHEMA_VERSION increases
// Here we can upgrade the database e.g. add more tables
}
/* Read all records from food_table */
public Cursor getAll() {
return (getReadableDatabase().rawQuery(
"SELECT _id, addFood, addCalories FROM food_table ORDER
BY addFood", null));
}
/* Read a particular record from food_table with id provided */
public Cursor getById(String id) {
String[] args = {id};
return (getReadableDatabase().rawQuery(
"SELECT _id, addFood, addCalories FROM food_table WHERE
_ID = ?", args));
}
/* Write a record into food_table */
public void insert(String addFood, String addCalories) {
ContentValues cv = new ContentValues();
cv.put("addFood", addFood);
cv.put("addCalories", addCalories);
getWritableDatabase().insert("food_table", "addFood", cv);
}
/* Update a particular record in food_table with id provided */
public void update(String id,String addFood, String addCalories) {
ContentValues cv = new ContentValues();
String[] args = {id};
cv.put("addFood", addFood);
cv.put("addCalories", addCalories);
getWritableDatabase().update("food_table", cv, " _ID = ?", args);
}
/* Read a record id value from food_table */
public String getID(Cursor c) {
return (c.getString(0));
}
public String getAddFood(Cursor c) {
return (c.getString(1));
}
public String getAddCalories(Cursor c) {
return (c.getString(2));
}
}
这是我的编辑按钮代码
private View.OnClickListener onEdit = new View.OnClickListener() {
@Override
public void onClick(View v) {
String foodStr = addFood.getText().toString();
String caloriesStr = addCalories.getText().toString();
helper.update(foodID,foodStr,caloriesStr);
}
};
【问题讨论】:
-
我建议在
helper.update(foodID,foodStr,caloriesStr);行之前添加行Log.d("ONCLCKUPDT","You clicked FoodID = " + String.valueOf(foodID) + "FoodStr = " + foodStr + " caloriesStr = " + caloriesStr);。我猜想 foodId 不是合适的值。不可能知道该值的来源,但它不太可能是正确的值。
标签: sqlite android-studio