<十>RecycleView点击事件
来源:互联网 发布:2017网络歌手排行榜 编辑:程序博客网 时间:2024/05/16 08:13
最终目的
模拟ListView的setOnItemClickListener()方法,调用者只须调用类似于setOnItemClickListener的东西就能获得被点击item的相关数据。
原理
为RecyclerView的每个子item设置setOnClickListener,然后在onClick中再调用一次对外封装的接口,将这个事件传递给外面的调用者。而“为RecyclerView的每个子item设置setOnClickListener”在Adapter中设置。其实直接在onClick中也能完全处理item的点击事件,但是这样会破坏代码的逻辑。
步骤
1.自定义的MyAdapter中实现OnItemClickListener接口,复写onClick处理item内控件的点击事件
2.在MyAdapter中定义接口(OnRecycleViewItemClickListener),模拟ListView的OnItemClickListener:
以上两步的代码:
@Overridepublic void onClick(View v) { if (onRecyclerViewItemClickListener!= null){ //注意这里使用getTag方法获取数据 onRecyclerViewItemClickListener .onRecycleViewItemClick(v,Integer. parseInt(v.getTag().toString())) ; }}public interface OnRecyclerViewItemClickListener { void onRecycleViewItemClick(View view , int position);}public OnRecyclerViewItemClickListener getOnRecyclerViewItemClickListener () { return onRecyclerViewItemClickListener;}public void setOnRecyclerViewItemClickListener (OnRecyclerViewItemClickListener onRecyclerViewItemClickListener) { this .onRecyclerViewItemClickListener = onRecyclerViewItemClickListener;}
同时记得声明一个OnRecycleViewItemClickListener的变量:
private OnRecyclerViewItemClickListener onRecyclerViewItemClickListener ;
3.接下来就是为Item内部具体控件的设置点击事件了(该例是为整个item设置点击事件,当然也可以按照此方法为特定控件添加点击处理)
在onCreateViewHolder中为整个item绑定点击事件:
@Override public MyAdapter.ViewHolder onCreateViewHolder (ViewGroup parent , int viewType) { View v = LayoutInflater.from(parent.getContext()) .inflate(R.layout. item_wifiinfo, parent , false) ; v.setOnClickListener( this ); // 创建并放回一个ViewHolder对象 ViewHolder vh = new ViewHolder(v); return vh ;}
注意上面调用接口的onItemClick()中的v.getTag()方法,这需要在onBindViewHolder()方法中设置和item相关的数据:
@Override public void onBindViewHolder(ViewHolder holder , int position) { holder.view .setTag(position+ "") ; //....}
4.在外部使用
mAdapter = new MyAdapter(data);mRecyclerView.setAdapter(mAdapter);mAdapter.setOnRecyclerViewItemClickListener (new OnRecyclerViewItemClickListener(){ @Override public void onItemClick(View view , int position){ //...... }});
1 1
- <十>RecycleView点击事件
- RecycleView 点击事件
- Recycleview的点击事件
- RecycleView点击事件
- RecycleView的点击事件
- recycleview点击事件
- recycleview条目点击事件
- Recycleview点击事件
- Recycleview的点击事件
- RecycleView的Item点击事件
- RecycleView 添加item点击事件
- RecycleView怎么添加点击事件
- Recycleview添加item点击事件
- RecycleView的不同类型Item点击事件
- RecycleView如何实现item的点击事件
- Android-RecycleView的item点击事件
- RecycleView 列表的item点击事件
- recycleview实现多种布局及点击事件
- Android开发学习之路--【前言】
- 面试题31:连续子数组的最大和(java)
- Uva536——Tree Recovery
- UUID 和 GUID 的区别
- 安装zookeeper
- <十>RecycleView点击事件
- poj Subsequence 3061 (高效&DP)
- Bellman-Ford(贝尔曼,福特)算法——解决负权边
- PAT1039
- Android 将assets中的文件拷贝到本地SD卡使用
- mysql插入数据,获取最新插入的ID(自增列)
- oc去除空格方法和判断空格方法
- python快速入门
- UVa 11997 K Smallest Sums 优先队列&&打有序表&&归并