繁体   English   中英

删除项目后 Recyclerview 未更新

[英]Recyclerview not updating after item was deleting

我有一个类似的问题在这里提到在这里输入链接描述

但建议的解决方案对我不起作用。 我的 recyclerview 列出了来自 sqlite 数据库的项目,当我向左滑动时,相应的数据已从数据库中成功删除。 昨天出于某种原因,一切正常,删除的项目从列表中消失,但从今天起,该项目在回收站视图中仍然可见。 这是我的代码:

 ItemTouchHelper.SimpleCallback itemTouchHelperCallback = new ItemTouchHelper.SimpleCallback(0,ItemTouchHelper.LEFT) {
    @Override
    public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
        return false;
    }

    @Override
    public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
        AlertDialog deleteFileDialog = new AlertDialog.Builder(DayListActivity.this)
                .setTitle()
                .setMessage()
                .setPositiveButton(ok, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        removeDay((long)viewHolder.itemView.getTag());
                        removeRecords((long)viewHolder.itemView.getTag());
                        getAllDays();//try to refresh recyclerview by calling function to 
                                     //load data from db
                        dayListAdapter.notifyItemRemoved(viewHolder.getAdapterPosition());
                        dayListAdapter.notifyDataSetChanged();
                        dialog.dismiss();
                    }
                })
                .setNegativeButton(R.string.file_delete_dialog_cancel, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                }).create();
        deleteFileDialog.show();
    }
};

首先,当你删除一个时,“getAllDays()”是否从db返回正确的数据? 它是否将 db 中的新数据设置到您的适配器中?

其次,如果这样做,您不应该调用notifyItemRemoved 和notifyDataSetChanged,因为当您设置新数据时,您应该已经调用了它。

第三,如果没有,则不必同时调用这两种方法。 如果您更改了所有数据,则使用 notifyDataSetChanged 再次绑定所有数据(不推荐)。 在这种情况下,通常说 notifyItemRemoved 就足够了

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM