我试图在活动页面上实现一个包含列表和其下一些其他视图的ToDo列表。Android RecyclerView删除项目动画错误
我使用整个页面LinearLayout
和列表中RecyclerView
,下面一起其他视图RecyclerView
(ImageView
,Buttons
...等)
这是我最后的视图层次:
<LinearLayout>
<TextView />
<RecyclerView />
<Button />
<EditText />
<ImageView />
</LinearLayout>
我已经实施RecyclerView
我可以添加和删除项目。 我在使用LinearLayoutManager
而未指定ItemAnimator
,因此使用了DefaultItemAnimator
。
将项目添加到列表中可按预期工作。我的问题是,当从RecyclerView
删除项(通过先从数据集中删除它,然后使用RecyclerViewAdapter.notifyItemRemoved
),页面不能很好地动画。
什么情况是,整个页面捕捉第一,以适应新的RecyclerView
高度,然后RecyclerView
项目中删除动画完成,这使得页面的行为看起来很怪异,因为RecyclerView
下面的所有意见抢购而被删除的项目淡出,但尚未失去其高度,然后剩下的RecyclerView
项(在删除的项目下方)向上滚动,看起来像从墙下向上滑动。
我试图寻找网络上的解决方案,并找不到任何解决我的问题。
我发现this unanswered question描述了同样的问题。如果我的解释不够清楚,请参考它。
任何人遇到同样的问题?有什么建议么?
谢谢。
所以你想删除动画时项目变化的权利? –
而不是使用notifyDataSetChanged(),请使用notifyItemRemoved()。 NotifyDataSetChanged重建RecyclerView中的整个数据集,所以所有的行都被重绘。而notifyItemRemoved()或notifyItemRangeChanged()只会刷新已更改的项目,所以生涩的议案将消失。 – Rachit
@Divyesh我不想删除动画,我只是希望整个页面在我从RecyclerView中删除一个项目时动画很好。我的意思是我希望页面在翻译之前等待RecyclerView项目动画完成。 – Copy33