我有一个带删除按钮的listView每个项目。我希望能够在单击项目按钮时删除该项目。
我尝试使用.remove(位置)和[position] = null,但是它不起作用。我不确定是因为我使用了数据库和cursorAdapter还是因为我是Android Studio的新手,而我只是不知道在.remove之前应该包含什么实际变量。据我了解,我的代码相当混乱,但是到目前为止,它仍然有效。
-XX:+PrintGCDateStamps
答案 0 :(得分:0)
您尝试执行以下操作吗?
myList.remove([INDEX]);
myList.notifyDataSetChanged(); or adapter.notifyDataSetChanged();
应该可以!如果不告诉我!
更多信息: How to delete item from listview using button?
永不放弃
答案 1 :(得分:0)
我不明白您为什么要将cursor
放在mylist
中,而使用SimpleCursorAdapter
的目的只是通过调用{{ 1}}方法。
要回答您的问题,请按照以下步骤操作:
在您的cursor
类中创建删除方法
getCursor()
将UserDb
设置为您的删除按钮
class UserDb {
void delete(String userId) {
mSqLiteDatabase.delete(USER_TABLE,
"id = ?",
new String[]{userId});
}
}
您可以考虑使用
onClickListener
获得更好的性能和内存处理。delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int deletePosition = (int) v.getTag();
cursor.moveToPosition(deletePosition);
String userId = cursor.getString(1); // I assume this is the user id
userDb.delete(userId);
// get the cursor that contains the newest data
Cursor newestDataCursor = userDb.getAllRows();
// change your adapter cursor
myCursorAdaptor.changeCursor(newestDataCursor);
// tell your adapter that the data has been changed, so it needs to update it's views
myCursorAdaptor.notifyDataSetChanged();
}
});
(对象关系映射)库,例如RecyclerView
甚至是ORM
,使您的生活更轻松。