在recyclerview中删除和刷新

Posted

技术标签:

【中文标题】在recyclerview中删除和刷新【英文标题】:delete and refresh in recyclerview 【发布时间】:2021-10-17 04:27:00 【问题描述】:

在我的应用中,我有一个底部导航,包括主页和收藏夹。在回收站视图中,当我单击“喜欢”按钮时,它将被添加到收藏夹中。现在再次单击时,我现在想将其从收藏夹中删除。

在我的代码中,该项目已被删除,但在我回家并返回之前不会被删除。

请注意,我不能使用arraylist.remove(position),因为如果是这样,即使在主页片段中,该项目也会被删除,我不希望这样。

适配器中的代码:

itemHolder.like.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View view) 
                int rowId = databaseHelper.GetId((String) itemHolder.headline.getText().toString());
                if (databaseHelper.IsLiked(rowId))
                    databaseHelper.UpdateLiked(rowId, false);
                    notifyItemRemoved(position);
                    notifyItemChanged(position);
                
                else
                    databaseHelper.UpdateLiked(rowId, true);
                    notifyDataSetChanged();
                    notifyItemChanged(position);
                
            

【问题讨论】:

【参考方案1】:
yourarraylist.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, yourarraylist.size());

【讨论】:

试试这个 yourarraylist.remove(position); notifyItemRemoved(位置); notifyItemRangeChanged(position, yourarraylist.size()); 正如我在问题中所说,我不能使用 arraylist.remove(position) 因为如果我这样做,即使在我不喜欢该项目的主片段中,它也会从列表中删除,这不应该发生 有没有办法说如果你在最喜欢的片段上然后 yourarraylist.remove(position) ? 是的,您创建和接口,然后从片段中删除 如果您对 HOME 和 FAVORITE 使用相同的 arrayList,那么您不能只从一个位置删除。它将从两个地方删除。为此,您必须在数据库中维护 2 列,例如 home = true/false 和 favorite = true/false。这样,您可以为 HOME 和 FAVORITE 设置 true 或 false。如果值为 false,则不显示该项目。如果它是真的,你可以展示它。我希望它有帮助!如果这对你有帮助,请点赞。

以上是关于在recyclerview中删除和刷新的主要内容,如果未能解决你的问题,请参考以下文章

在recyclerview中删除和刷新

在水平和垂直的recyclerview中膨胀布局,具有recycler视图的FlexboxLayout添加视图水平自动垂直

1.Android recycleView万能分隔线 GridLayoutManager布局item左右间距均等(最易懂)

RecyclerView详解

Android RecyclerView 绘制流程及Recycler缓存

当sqlite android片段中的数据更改或删除时如何刷新recyclerview?