2017-04-05 71 views
0

我有RecyclerView及其RecyclerView.Adapter和查看人。我想作为内部onClick()上删除按钮在ViewHolderRecyclerView notifyItemRemoved(位置)不能正常工作

int position = getAdapterPosition(); 
if(position > -1) 
{ 
Place place = placeList.remove(position); 
notifyItemRemoved(position); 
notifyItemRangeChanged(position, getItemCount()); 
} 

尽管去掉视图和做动画(名单也被影响),旧观点(或下一个跟随来删除列表中的项目,代码)仍然存在或再次绘制。 例如,如果列表以size = 5开始,那么我尝试删除索引4,他删除4,然后仍然绘制5个视图。

编辑

如果我删除notifyItemRangeChanged()那么它是错误只如果我很快做删除

2-点击按钮下面

1-点击那个带我到新查看

3-返回到我可以删除的列表

4-开始删除,并发生错误。即使List大小= 0(getItemCount被调用0),1项仍然保留。

如果我只调用NotifyDataSetChanged(),那么它将删除项目,但视图只是停留在那里!

赞赏任何帮助或建议。

谢谢。

编辑完整的类LINK

+0

我也面临这个问题,并尝试一切可用的在线,但没有任何效果。但在我的情况下,它有时可以正常工作,虽然有时当我触摸我的列表时,它会删除空白空间 –

+0

@Vivek Mishra正常行为,我点击删除,它没有notifyItemRangeChanged()。但是,如果我去新的观点,回去,>>错误发生 –

回答

0
lastImages.remove(position); (lastImages equals your array list) 
    newContentAdapter.notifyDataSetChanged(); 

它的作品。你必须在你的数组中删除它而不是项目。然后通知适配器。这就是所有

+0

请检查我的编辑 –

+0

我使用从活动中的回收视图删除项目。我在活动中删除项目然后发送新数组从活动到适配器与此:.notifyDataSetChanged。所以所有问题都以这种方式消失了。 –

0

试试这个:

placeList.remove(position); 
notifyItemRemoved(position); 
+0

请检查我的编辑。此外,这已经在我的代码中,我没有看到区别?! –

-1

你需要更新你的适配器;

在Adapter类中创建方法,您将在其中放置数据。

例如:setData(List<Place> data);

当名单最后一个项目,你需要写:adapter.setData(null);

我有同样的问题。只需设置list = null。就这些。

-1

使用下面的代码它会解决你的问题。

​​
+0

我在删除之前删除了日志大小之后,列表大小不是0 –

+0

您的意思是您删除了所有行,仍然会以列表大小获得一个。 –

+1

我删除了所有的行,最后,1项仍然可见,但getItemCount = 0.您仍然可以在那里绘制一个视图 –