当前位置: 首页 > 知识库问答 >
问题:

删除项目后RecycerView未更新

熊烨
2023-03-14

但是建议的解决方案对我来说都不起作用。我从sqlite数据库中的RecycerView列表项,当我向左滑动时,相应的数据将成功地从数据库中删除。由于某些原因,昨天一切都工作得很好,删除的项从列表中消失了,但从今天开始,该项在RecycerView中仍然可见。下面是我的代码:

 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();
    }
};

共有1个答案

华俊贤
2023-03-14

首先,“getalldays()”在删除数据时是否从数据库返回正确的数据?它是否将数据库中的新数据设置到适配器中?

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

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

 类似资料:
  • 删除项目后,“我的回收器”视图未更新。此recyclerView位于片段内部。我试过各种方法,但都不管用。 片段类中的适配器声明 回收服务适配器: } 调试项目时,我可以看到该项实际上正在从ArrayList中删除。但不在循环视图中更新。 删除后,如果滚动回收站视图,则从回收站视图中删除已删除的项。但不是没有滚动。

  • 我正在尝试更新JTable(或data?)的行在我对一行执行删除操作后,当选择另一行时,可以编辑所选行。当前删除该行将使已删除行下方的行上移,但如果选择了该行号并尝试进行编辑,则会返回(JOptionPane),就像未选择任何内容一样。它似乎没有“刷新”数据(?)。 这是一个SCCE,希望有人可以运行它并指出问题。我试着尽可能地缩小它,以便于复制/粘贴: 我在这里看到这个问题的各种形式都有一些不同

  • 我正面临一个问题,我无法删除RecycerView中的一个项目。我试图在互联网上搜索,但无法看到任何解决方案,我遵循这篇文章Android Recycerview添加和删除项目,但我仍然无法删除下面选择的项目是我的适配器和碎片的代码 RecyclerViewAdapter.java

  • 在从recycler视图中移除项目后,我必须获取recyclerview的数据集大小 我正在从适配器中删除项目 代码片段