ItemTouchHelper notifyItemMoved from to position 不工作
Posted
技术标签:
【中文标题】ItemTouchHelper notifyItemMoved from to position 不工作【英文标题】:ItemTouchHelper notifyItemMoved from to position not working 【发布时间】:2016-06-20 22:21:30 【问题描述】:当前,我在 recyclerview 中执行拖放项目时遇到问题。 我正在参考https://github.com/iPaulPro/android-ItemTouchHelper-Demo 但是在适配器中执行函数时:
mListBookMark 是 Object 的 ArrayList
@Override
public boolean onItemMove(int fromPosition, int toPosition)
Collections.swap(mListBookMark, fromPosition, toPosition);
notifyItemMoved(fromPosition, toPosition);
return true;
当我将项目从位置 a 拖动到位置 b 但完成拖动回收器视图时未更改数据。 我该怎么做? 请给我一些建议!谢谢。
【问题讨论】:
我也有这个问题。现在我解决了在返回 true 之前放置 notifyDataSetChanged() 的问题。 【参考方案1】:尝试将notifyItemChanged()
添加到您的代码中,如下所示:
@Override
public boolean onItemMove(int fromPosition, int toPosition)
Collections.swap(mListBookMark, fromPosition, toPosition);
notifyItemMoved(fromPosition, toPosition);
notifyItemChanged(fromPosition);
notifyItemChanged(toPosition);
return true;
这应该会根据新位置更新视图。
【讨论】:
这实际上把动画弄得一团糟,不知何故导致 onItemMove 被调用了两次!以上是关于ItemTouchHelper notifyItemMoved from to position 不工作的主要内容,如果未能解决你的问题,请参考以下文章
Android开发 RecyclerView实现拖动与滑动ItemTouchHelper
[技术博客] 通过ItemTouchHelper实现侧滑删除功能
RecyclerView 知识梳理 - ItemTouchHelper
两个recyclerviews的Android ItemTouchHelper