RecyclerView的使用(三)
上个小结中介绍了如何使用RecyclerView显示不同的数据展示样式(瀑布流也是可以显示的,从GridView改就好)
本节来为RecyclerView的item添加监听事件。
RecyclerView本身没有为item设置监听事件,想要使用onclick或者onLongclick事件需要自己定义(这是最坑爹的),然后暴露方法供调用
实现RecyclerView 的item 的监听事件需要以下几步:
(鸿洋大神表示实现该方法有很多)我这里就使用大神在讲解中所用的方法:
1、在Adapter方法中添加监听接口onItemClickListener和onItemLongClickListener;
2、暴露接口的set方法;
3、在onBindviewHolder方法中编写onItemClickListener和onItemLongClickListener的监听
4、调用该方法
实现效果:
点击
长按
在Adapter方法中添加监听接口onItemClickListener和onItemLongClickListener
public interface OnItemClieckLinster{
void onItemClickListener(View view , int pos); void onItemLongClickListener(View view , int pos); }
暴露方法
private OnItemClieckLinster onItemClieckLinster; public void setOnItemClieckLinster(OnItemClieckLinster listener){ this.onItemClieckLinster = listener; }
实现监听 修改onBindViewHolder方法
//绑定ViewHolder @Override public void onBindViewHolder(final MyViewHolder holder, final int position) { //为textview 赋值 holder.tv.setText(mDatas.get(position)); if(onItemClieckLinster != null){ //onitemclicklistener holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { onItemClieckLinster.onItemClickListener(holder.itemView , position); } }); //onitemlongclicklistener holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { onItemClieckLinster.onItemLongClickListener(holder.itemView , position); return false; } }); } }
调用监听
myAdapter.setOnItemClieckLinster(new MyAdapter.OnItemClieckLinster() { @Override public void onItemClickListener(View view, int pos) { Toast.makeText(MainActivity.this, "click" + pos , Toast.LENGTH_SHORT).show(); } @Override public void onItemLongClickListener(View view, int pos) { Toast.makeText(MainActivity.this, "long click" + pos , Toast.LENGTH_SHORT).show(); } });
做完上面的操作就能实现图片上的效果啦~
不过有没有发现item没有点击动画?这怎么行呢!下节我们九尾item添加点击动画吧!