作者:青春快乐的勇哥 | 来源:互联网 | 2023-09-17 17:49
参考1、http:stackoverflow.comquestions27293960swipe-to-dismiss-for-recyclerview30601554#
参考
1、http://stackoverflow.com/questions/27293960/swipe-to-dismiss-for-recyclerview/30601554#30601554
2、https://developer.android.com/reference/android/support/v7/widget/helper/ItemTouchHelper.SimpleCallback.html
3、https://medium.com/@ipaulpro/drag-and-swipe-with-recyclerview-b9456d2b1aaf
效果如下:
![](https://img1.php1.cn/3cd4a/24de0/1c8/77744994fccc9353.jpeg)
1、更新Android Support Library
compile 'com.android.support:recyclerview-v7:22.2.+'
2、new一个SimpleCallback出来
ItemTouchHelper.SimpleCallback callback = new ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP | ItemTouchHelper.DOWN,
ItemTouchHelper.LEFT) {
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder source, RecyclerView.ViewHolder target) {
final int fromPos = source.getAdapterPosition();
final int toPos = target.getAdapterPosition();
mAdapter.mOnMove(fromPos, toPos);
return true;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int i) {
mAdapter.mOnSwiped(viewHolder);
}
};
他有两个参数,第一个为drag操作的方向,第二个为swipe操作的方向。
在onMove方法中具体写移动拖拽item的操作,onSwiped中写滑动的操作。
public void mOnMove(int fromPos,int toPos) {
String prev = mList.remove(fromPos);
mList.add(toPos > fromPos ? toPos - 1 : toPos, prev);
notifyItemMoved(fromPos, toPos);
}
public void mOnSwiped(RecyclerView.ViewHolder viewHolder) {
mList.remove(viewHolder.getAdapterPosition());
notifyItemRemoved(viewHolder.getAdapterPosition());
}
3、new一个ItemTouchHelper
ItemTouchHelper mItemTouchHelper = new ItemTouchHelper(callback);
4、把ItemTouchHelper和RecyclerView关联
mItemTouchHelper.attachToRecyclerView(mRecyclerView)
源码如下
https://github.com/mmga/ItemTouchHelperDemo-SimpleCallback