这两天搞了个朋友圈选完图片可以拖拽调换位置的功能,自己挖了很多坑,慢慢填上,记一下。。。。。。
为recyclerView添加Item移动,给你的recycleview设置Adapter适配器,我就不贴代码了,很简单的东西,这里要注意的是把数据源(图片的路径)传进来。
简单的说一个地方
public final void notifyItemMoved(int fromPosition, int toPosition) {
mObservable.notifyItemMoved(fromPosition, toPosition);
}RecycleView中的这个方法是实现了拖拽时滑动的效果
Collections.swap(imagePaths, srcPosition, targetPosition);
而这个java类中的swap方法是实现了两张图片位置的对调。。。这个坑,我跳了一下午。
这里要说一点,不懂的地方就去看源码。一开始很难看懂源码,毕竟都是英文的,但是!!!
不懂得地方可以去百度,看懂了源码再去解决问题就没毛病了
// 互换数据源中的数据Item的位置
Collections.swap(imagePaths, srcPosition, targetPosition);
adapter.notifyDataSetChanged();
这个是让两个图片位置对调,比较直观
String str = imagePaths.get(srcPosition);
imagePaths.remove(srcPosition);
imagePaths.add(targetPosition, str);
// 更新UI中的Item的位置,主要是给用户看到交互效果
adapter.notifyItemMoved(srcPosition, targetPosition);这种是先把我选中的图片位置清楚,再把它插入到目标位置。
https://www.jianshu.com/p/4fd325786061 这个是recycleview怎么实现item的拖拽。
http://blog.csdn.net/qq924862077/article/details/48022135 这个Collections包装类 的解释。
相关文章: