RecycleView添加item点击效果
2017-02-17 17:16
976 查看
RecycleView不像ListView有自带的item点击效果 所以需要自己手动添加
最直接的方式是在onBindViewHolder()方法中对item添加View.setOnClickedLisetener();
这样如果需要在点击的时候将当前点击的positon传到监听方法中的话,每次onBindViewHolder()方法都会new一个Listener这样需要产生多个对象,未免浪费
所以这里的思路是通过ViewHolder来纪录当前被点击条目的position
上代码
使用时:
完成
最直接的方式是在onBindViewHolder()方法中对item添加View.setOnClickedLisetener();
这样如果需要在点击的时候将当前点击的positon传到监听方法中的话,每次onBindViewHolder()方法都会new一个Listener这样需要产生多个对象,未免浪费
所以这里的思路是通过ViewHolder来纪录当前被点击条目的position
上代码
public abstract class BaseRecycleViewAdapter<T extends BaseRecycleViewAdapter.ViewHolder> extends RecyclerView.Adapter<T> { private OnItemClickListener mOnItemClickListener; public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { private int mPosition = -1; //由ViewHolder纪录当前item的position 设置默认值为-1 public ViewHolder(View itemView) { super(itemView); ButterKnife.bind(this, itemView); //这里使用了ButterKnife来代替findViewById itemView.setOnClickListener(this);//给ViewHolder添加点击事件 } public void setPosition(int i) { mPosition = i; //用于向viewHolder传入position } @Override public void onClick(View v) { //把点击事件交给OnItemClickListener 来处理 if (mOnItemClickListener != null) { if (mPosition != -1) { mOnItemClickListener.onItemClicked(v, mPosition); } else { //如果没有给ViewHolder设置position会导致=-1 Debug.e("ViewHolder's positon = -1"); } } } } //设置监听 public void setOnItemClickListener(OnItemClickListener onItemClickListener) { mOnItemClickListener = onItemClickListener; } //用于最终实现监听的接口 public interface OnItemClickListener { void onItemClicked(View v, int postion); } }
使用时:
class MyAdapter extends BaseRecycleViewAdapter<MonthAdapter.ViewHolder> { @Override public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { setOnItemClickListener(new MonthAdapter.OnClickListener()); MyAdapter .ViewHolder holder = new MyAdapter .ViewHolder(LayoutInflater.from(mActivity).inflate(R.layout.myadapter , viewGroup, false)); ... return holder; } @Override public void onBindViewHolder(ViewHolder viewHolder, int i) { viewHolder.setPosition(i); //一定要运行这个方法 ... } @Override public int getItemCount() { return list.size(); } class ViewHolder extends BaseRecycleViewAdapter.ViewHolder { @Bind(R.id.item) Button item; public ViewHolder(View itemView) { super(itemView); } } //实现的点击监听 class OnClickListener implements BaseRecycleViewAdapter.OnItemClickListener { @Override public void onItemClicked(View v, int postion) { //实现监听内容 } } } }
完成
相关文章推荐
- 记录一次给recyclerview item点击添加水波纹反馈效果没起作用的问题。
- RecycleView 添加item点击事件
- Recycleview添加item点击事件
- android listview ,recycleView item没有点击效果
- [Android | Material Design] RecyclerView Item点击事件 添加水波纹效果 两种办法
- 利用RecycleView实现类似ListView的Item点击,长按等操作事件以及点击后每一项在添加一个列表
- 利用Recycleview水平平移并自动挪动Item位置(仿Instagram效果)
- 从头开始学 RecyclerView(二) 添加item点击事件
- 实现RecycleView动态使列表item可以点击或不可点击切换
- textview添加selector实现button的点击效果
- iOS 在tableView上添加button导致按钮没有点击效果和不能滑动的 zhuang
- 安卓ListView的Item中添加按钮后,点击Button获取点击行的TextView文本数据
- Recycleview使用详情及添加点击事件
- Android中RecyclerView的item中控件的点击事件添加删除一行、上移下移一行的代码实现
- Android databinding RecycleView item 子控件点击事件
- Android RecyclerView给Item添加点击事件
- 加载RecycleView时为itemView添加一些过渡动画(一)
- RecycleView设置点击的两种方式:adapter中的onBindViewHolder(VH,int)方法中进行;实现RecyclerView的addonItemTouchListerner()
- 点击ListView一个Item弹出窗体,窗体展示时添加动画效果切入
- RecycleView的item点击监听的设置逻辑