卡片层叠效果的实现:比如探探上的左滑右滑切换图片。
而现在我们要实现的卡片层叠以及滑动删除是通过RecyclerView的ItemTouchHelper工具来实现的,ItemTouchHelper这个工具是对RecyclerView列表的拖动排序和滑动删除进行了处理。ItemTouchHelper是继承了RecyclerView.ItemDecoration,我们可以发现ItemTouchHelper源码构造传递一个CallBack这个参数源码告诉用户需要控制视图的动作行为,所以就需要重新定义这个CallBack。
而现在我们要实现的卡片层叠以及滑动删除是通过RecyclerView的ItemTouchHelper工具来实现的,ItemTouchHelper这个工具是对RecyclerView列表的拖动排序和滑动删除进行了处理。ItemTouchHelper是继承了RecyclerView.ItemDecoration,我们可以发现ItemTouchHelper源码构造传递一个CallBack这个参数源码告诉用户需要控制视图的动作行为,所以就需要重新定义这个CallBack。
重新定义CallBack:
package zhangtao.bwie.com.recyclerveiw_cards;
import android.graphics.Canvas;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.helper.ItemTouchHelper;
import android.util.Log;
import android.view.View;
import java.util.List;
import Bean.SwipeCardBean;
public class SwipeCardCallBack extends ItemTouchHelper.SimpleCallback{
private List<SwipeCardBean> alist;
private UniversalAdapter madapter;
private RecyclerView mrecy;
public SwipeCardCallBack(List<SwipeCardBean> alist, UniversalAdapter universalAdapter, RecyclerView recy_card) {
//即我们对哪些方向操作关心。如果我们关心用户向上拖动,可以将
//填充swipeDirs参数为LEFT | RIGHT 。0表示从不关心。
super(0, ItemTouchHelper.LEFT | ItemTouchHelper.UP | ItemTouchHelper.RIGHT | ItemTouchHelper.DOWN); this.alist = alist; this.madapter = universalAdapter; this.mrecy = recy_card; } @Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder
viewHolder, RecyclerView.ViewHolder target) { return false; } @Override public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { //当已经滑动删除了的时候会被回掉--删除数据,循环的效果 SwipeCardBean remove = alist.remove(viewHolder.getLayoutPosition()); Log.d("zzz","card:data:"+remove.toString());
alist.add(0, remove); madapter.notifyDataSetChanged(); } @Override public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) { super.onChildDraw(c, recyclerView,
viewHolder, dX, dY, actionState, isCurrentlyActive); //监听话滑动的距离