M.B*_*aka 7 android android-recyclerview
我有一个RecyclerView和它的RecyclerView.Adapter视图持有人。我正在尝试从列表中删除一个项目,onClick()在 ViewHolder 中的删除按钮上的代码如下
int position = getAdapterPosition();
if(position > -1)
{
Place place = placeList.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, getItemCount());
}
Run Code Online (Sandbox Code Playgroud)
尽管删除视图并执行动画(列表也会受到影响),旧视图(或较低的视图)仍然存在或再次绘制。例如,如果列表以 size = 5 开头,那么我尝试删除索引 4,他删除 4,然后仍然绘制 5 个视图。
编辑
如果我删除notifyItemRangeChanged()那么它只会在我执行以下操作时才会出现该错误
1-点击删除
2-单击按钮非常快速,可将我带到新视图
3-回到我可以删除的列表
4-开始删除,错误发生。即使List大小 = 0(getItemCount 被调用为 0),仍然保留 1 个项目。
如果我只调用 NotifyDataSetChanged(),那么它会删除项目,但视图只是停留在那里!!
任何帮助或建议表示赞赏。
谢谢。
编辑完整课程链接
Abh*_*mar 11
使用下面的代码它将解决您的问题。
holder.deleteImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(list.size()!=0){
list.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position,list.size());
}
}
});
Run Code Online (Sandbox Code Playgroud)
尝试这个:
placeList.remove(position);
notifyItemRemoved(position);
Run Code Online (Sandbox Code Playgroud)
lastImages.remove(position); (lastImages equals your array list)
newContentAdapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
这是有效的。您必须将其从数组而不是项目中删除。然后通知适配器。就这样
| 归档时间: |
|
| 查看次数: |
9176 次 |
| 最近记录: |