ItemTouchHelper之SwipeDismiss
来源:互联网 发布:国产电视剧推荐 知乎 编辑:程序博客网 时间:2024/03/29 20:40
引用
This is a utility class to add swipe to dismiss and drag & drop support to RecyclerView.
它是一个非常强大的工具,感觉跟ViewDragHelper一样,不过ItemTouchHelper顾名思义是处理item的touch事件的.
它能够让你非常容易实现侧滑删除,拖拽的功能.
今天,就拿它来实现以下侧滑删除!~
开始
首先我们看下ItemTouchHelper的构造方法ItemTouchHelper(Callback callback) 它需要我们传入一个Callback
而刚好Android非常任性,已经帮我们实现了一个:SimpleCallback
甚至,在注释里已经给我们写好了样例!!!有兴趣的同学可以去看看,这里就不给出了.
接下来上代码!~
定义一个Adapter
这个adapter没什么特别的,挺简单的,相信大家会
public static class ListAdapter extends RecyclerView.Adapter<ListAdapter.ViewHolder> implements View.OnClickListener{ private Context mContext; private List<String>mDatas; public ListAdapter(Context context,List<String> data){ mDatas= data; mContext = context; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.material_list_item, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.text.setText(mDatas.get(position)); holder.text.setTag(position); holder.text.setOnClickListener(this); } @Override public int getItemCount() { return mDatas.size(); } @Override public void onClick(View v) { TextView tv = (TextView) v; Toast.makeText(mContext, tv.getText()+";;"+tv.getTag(), Toast.LENGTH_SHORT).show(); } public static class ViewHolder extends RecyclerView.ViewHolder{ TextView text; public ViewHolder(View view){ super(view); text = (TextView) view.findViewById(R.id.iv_item); } } }
定义一个RecyclerView
设置为垂直list的样式,并且与上面的Adapter关联
mRvList.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));mRvList.setAdapter(mAdapter);
实例化一个ItemTouchHelper
再实例化ItemTouchHelper之前我们再看一下SimpleCallback的构造方法:
ItemTouchHelper.SimpleCallback(int dragDirs, int swipeDirs)
dragDirs 代表你想拖拽的方向
swipeDirs 你想滑动的方向
都分别有一下值,很好理解:
LEFT
RIGHT
START
END
UP
DOWN
动手
// 0 代表我不拖拽, ItemTouchHelper.RIGHT代表我往右滑动 new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.RIGHT) { //在这个回调 我们处理滑动 @Override public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { Log.d(TAG, "onSwiped() called with " + "viewHolder = [" + viewHolder + "], direction = [" + direction + "]"); //这里我们通过viewHolder获取position int position = viewHolder.getAdapterPosition(); mData.remove(position); mAdapter.notifyItemRemoved(position); Toast.makeText(getActivity(), "拆散的position:"+position, Toast.LENGTH_SHORT).show(); } // 暂时不处理移动事件... @Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { Log.d(TAG, "onMove() called with " + "recyclerView = [" + recyclerView + "], viewHolder = [" + viewHolder + "], target = [" + target + "]"); return false; } }).attachToRecyclerView(mRvList);
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0822/3349.html
http://blog.csdn.net/easion_zms/article/details/47147191
http://www.open-open.com/lib/view/open1435287807716.html
RecyclerView的拖动和滑动 第一部分 :基本的ItemTouchHelper示例
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0630/3123.html
RecyclerView的拖动和滑动 第二部分 :拖块,Grid以及自定义动画
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0724/3219.html
非常易于使用的滑动删除库,用于Android的RecyclerView,支持水平方向和竖直方向的滑动删除。
http://www.open-open.com/lib/view/open1445773975085.html
0 0
- ItemTouchHelper之SwipeDismiss
- RecyclerView爱恨情仇之ItemTouchHelper
- ItemTouchHelper
- RecyclerView之使用ItemTouchHelper实现交互动画
- RecyclerView之使用ItemTouchHelper和ItemTouchHelper.Callback实现条目拖拽排序
- android之RecycleView之ItemTouchHelper 处理拖拽、滑动删除
- RecyclerView之ItemTouchHelper仿今日头条频道管理拖动
- Android进阶七:RecyclerView拖动滑动之ItemTouchHelper
- RecyclerView ItemTouchHelper
- Android学习之ItemTouchHelper实现RecylerView的拖拽以及滑动删除功能
- RecyclerView系列之三:使用ItemTouchHelper实现RecyclerView的条目交互特效
- Android学习之ItemTouchHelper实现RecylerView的拖拽以及滑动删除功能
- ItemTouchHelper源码解析
- RecycleView ItemTouchHelper 学习(一)
- ItemTouchHelper实现短按拖拽
- ItemTouchHelper的使用
- RecyclerView使用ItemTouchHelper
- ItemTouchHelper 入门一
- LinearLayout增加divider分割线
- CoordinatorLayout之Behavior使用
- android下载封装类Download,支持断点下载
- 实现RadioButton多行多列排列布局
- PathView实现炫酷SVG动画
- ItemTouchHelper之SwipeDismiss
- Design各控件的搭配使用
- Python-OpenCV人脸检测(代码)
- Design各控件的搭配使用2
- Design各控件的搭配使用3
- Design各控件的搭配使用4
- QiYuAdmin-bootstrap.addtabs美化(SpringBoot实战)
- BZOJ4200: [Noi2015]小园丁与老司机 最小流
- iconify使用文本替换icon测试