如何使用项目特定的删除按钮在列表视图中删除项目?

时间:2019-04-03 15:00:00

标签: java android android-listview

我有一个带删除按钮的listView每个项目。我希望能够在单击项目按钮时删除该项目。

我尝试使用.remove(位置)和[position] = null,但是它不起作用。我不确定是因为我使用了数据库和cursorAdapter还是因为我是Android Studio的新手,而我只是不知道在.remove之前应该包含什么实际变量。据我了解,我的代码相当混乱,但是到目前为止,它仍然有效。

-XX:+PrintGCDateStamps

2 个答案:

答案 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,使您的生活更轻松。