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添加点击动画吧!

posted @ 2016-07-30 22:09  我辈年轻  阅读(1140)  评论(0编辑  收藏  举报