大家好,我有一个从数据库的字符串列创建的列表菜单。当用户单击列表菜单项时,他们将删除它。我通过将列表项位置传递给我的 DBAdapter 上的删除函数来做到这一点。
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
db.deleteContact(position);
}
该函数找到相应的行索引并将其删除。
public boolean deleteContact(long rowId) {
return db.delete(DATABASE_TABLE, KEY_NAME + "=" + rowId, null) > 0;
}
问题(这对你们大多数人来说可能很明显)是当用户删除时,比如说列表菜单项 2,并且从表中删除相应的索引,列表菜单刷新并且之前在位置 3 的项目现在是在位置 2。如果用户试图删除它,删除函数接收“2”作为参数,但要删除的所需行的索引是 3。
我知道这是一个愚蠢的问题,但有人可以提出一个有效的解决方法吗?谢谢