【发布时间】:2017-04-05 12:18:10
【问题描述】:
我有一个 RecyclerView 及其 RecyclerView.Adapter 和视图支架。我正在尝试从列表中删除一个项目,代码如下在 ViewHolder 中的删除按钮上的 onClick() 内
int position = getAdapterPosition();
if(position > -1)
{
Place place = placeList.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, getItemCount());
}
尽管删除了视图并执行了动画(列表也会受到影响),但旧视图(或更低的视图)仍然存在或再次绘制。 例如,如果列表以size = 5开头,那么我尝试删除索引4,他删除4,然后仍然绘制5个视图。
编辑
如果我删除 notifyItemRangeChanged(),那么只有当我执行以下操作时它才会出现该错误
1-点击删除
2-点击按钮非常快,带我到新视图
3- 回到我可以删除的列表
4- 开始删除,错误发生。即使List size = 0,仍有 1 项保留(使用 0 调用 getItemCount)。
如果我只调用 NotifyDataSetChanged(),那么它会删除项目,但视图只是停留在那里!!
感谢任何帮助或建议。
谢谢。
EDIT完成课程LINK
【问题讨论】:
-
我也面临这个问题,尝试了网上所有可用的方法,但完全没有效果。但在我的情况下,它有时确实可以正常工作,但有时它会在我触摸我的列表时立即删除空格
-
@Vivek Mishra 我点击删除的正常行为,它在没有 notifyItemRangeChanged() 的情况下工作。但是如果我转到新视图,请返回,>> 错误发生
-
我在 onSwiped 方法中调用了重新加载的回收器视图。有效!虽然它会删除动画。
标签: android android-recyclerview