java - 从 RecyclerView 中移除对象

标签 java android android-recyclerview

使用 ListView 时,我可以通过编写 this.adapter.delete(mYeets.get(position)) 轻松地从适配器中删除一个项目。使用 RecyclerView,是否有等效项?还是通知适配器我现在必须做的所有更改?

private void deleteComment(int position) {
    String currentUserObjectId = ParseUser.getCurrentUser().getObjectId();
    ParseQuery<ParseObject> query = new ParseQuery<>("Yeet");
    query.whereEqualTo(ParseConstants.KEY_OBJECT_ID, mYeets.get(position).getObjectId());
    query.whereContains(ParseConstants.KEY_SENDER_ID, currentUserObjectId);
    query.findInBackground((yeet, e) -> {
        if (e == null) {

            for (ParseObject yeetObject : yeet) {

                if (yeetObject.getParseObject(ParseConstants.KEY_SENDER_AUTHOR_POINTER).getObjectId().equals((ParseUser.getCurrentUser().getObjectId()))) {

                    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(mContext);
                    dialogBuilder.setTitle("Delete");
                    dialogBuilder.setMessage("Do you want to delete this Yeet?");
                    dialogBuilder.setPositiveButton("Yes", (dialog, which) -> {

                        // Iterate over all messages and delete them
                        for (ParseObject delete : yeet) {

                            delete.deleteInBackground();

                            //this.adapter.delete(mYeets.get(position));
                            this.adapter.notifyDataSetChanged();

                            Toast.makeText(mContext, "Yeet deleted", Toast.LENGTH_SHORT).show();
                        }

                    });
                    dialogBuilder.setNegativeButton("No", (dialog, which) -> {
                    });
                    AlertDialog alertDialog = dialogBuilder.create();
                    alertDialog.show();
                }
            }

        } else {
            Log.e("Error", e.getMessage());
        }
    });
}

最佳答案

只需从 RecyclerView.Adapter 使用的数据结构 (List) 中删除项目,然后调用其 notifyItemRemoved()应该是最好的方法。

之前建议的notifyDataSetChanged()不必要地使列表中的每个项目都无效,而不仅仅是那些位于已删除项目之后的项目。

关于java - 从 RecyclerView 中移除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39574647/

相关文章:

android - 即使 recyclerview 为空,工具栏仍可滚动

java - 转换为 jSON 时忽略 java bean 字段

Android:系统调用期间出现 SSLException I/O 错误,连接超时

Android 不同的屏幕尺寸和密度

android - 在折叠工具栏布局上将 RecyclerView 锚定得更高

android - 如何使用 Espresso 为 RecyclerView 中的项目设置 IdlingResource?

java - sleep 功能不会落后于人工智能的轮次

Java 计时器 - 无论如何将其更改为在打开页面时自动启动而不是单击开始

java - 以任意顺序给出的同一组字符的唯一哈希值?

android - 如何知道 Android 中的新服务何时准备就绪?