我的ListView显示来自我的SQLITE数据库的数据。 通过ListViewItem上的Longclick我删除了这个特定的Item。 EveryThing工作正常,但我没有删除我的第一个项目。我没有在LogCat中得到任何错误。没有任何事情发生。
以下是数据库类的代码:
public void deleteEntry(String TABLE, int pos) {
SQLiteDatabase database = this.getWritableDatabase();
database.delete(TABLE, KEY_ROWID + "=?" , new String[] { String.valueOf(pos)});
// also tryed this code
database.delete(TABLE, KEY_ROWID + "= '" + pos +"'",null);
}
以下是 ListView活动的代码:
// Deletes the given row
database.deleteEntry(MyDatabase.DATABASE_TABLE_ORDERS, position);
updateList();
我非常不确定已提交的 int pos 表示相应数据库条目的rowId(第一个条目 pos 为0,第二个 pos 是1等等)
updateList()创建新的列表视图并再次从数据库加载所有数据
有没有人知道为什么我可以删除我的数据库中的ListView /行中的所有项目,除了我的第一个条目?谢谢你的帮助!
答案 0 :(得分:1)
在仔细阅读了您的问题后,我认为我最初在评论中提出的问题是......
在我看来,您正在使用int pos
参数并认为它是数据库中的行ID,情况并非如此。 int pos
参数是列表中的位置(可能与行ID不同,具体取决于您的排序等)。
行id包含在侦听器的long id
参数中。以下更改可以帮助您(假设我的猜测是正确的)。
@Override
public void onListItemClick(ListView l, View v, int pos, long id) {
database.deleteEntry(MyDatabase.DATABASE_TABLE_ORDERS, id);
updateList();
}
public void deleteEntry(String TABLE, long id) {
SQLiteDatabase database = this.getWritableDatabase();
database.delete(TABLE, KEY_ROWID + "=?" , new String[] { String.valueOf(id)});
// or this could be used
database.delete(TABLE, KEY_ROWID + "= " + id ,null);
}
答案 1 :(得分:0)
database.execSQL(“DELETE FROM”+ TABLE +“ORDER BY”+ column_to_order_by +“ASC LIMIT(0,1);”):
我会先在测试台上进行测试!