Android RecyclerView的Item单击事件&长按事件(自定义接口回调)

本文改编自.原作者:时代新人
原文出处:http://blog.csdn.net/u013184970/article/details/70740301?locationNum=2&fps=1

先看效果图吧:

Android RecyclerView的Item单击事件&长按事件(自定义接口回调)_第1张图片Android RecyclerView的Item单击事件&长按事件(自定义接口回调)_第2张图片
1.Google推出RecyclerView是很好用。但是Google并没有给我们提供item的点击事件。
2.根据ListView源码中获取灵感,自己重敲onClickListener接口回调传参(int position),
3.废话不多讲,直接开车:在我们的adapter(适配器)中增加下面这两个方法:

   private OnItemClickListener onRecyclerViewItemClickListener;

    public interface OnItemClickListener {
        void onClick(int position);
        void onLongClick( int position);
    }

    public void setOnRecyclerViewItemClickListener(OnItemClickListener onItemClickListener) {
        this.onRecyclerViewItemClickListener = onItemClickListener;
    }

然后在onBindViewHolder方法里做如下更改:

@Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
        //绑定数据优化并强转
        RecViewHolder recViewHolder = (RecViewHolder) holder;
    //重点在这里判空然后做接口的绑定
    if (onRecyclerViewItemClickListener!=null) {
            recViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    onRecyclerViewItemClickListener.onClick(position);
                }
            });
            recViewHolder. itemView.setOnLongClickListener( new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    onRecyclerViewItemClickListener.onLongClick(position);
                    return false;
                }
            });
        }
}

在MainAcitivity中添加使用:

        recAdapter.setOnRecyclerViewItemClickListener(new RecAdapter.OnItemClickListener() {
                    @Override
                    public void onClick(int position) {
                        Toast.makeText(MainActivity.this,"您点击了第"+position+"条信息",Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onLongClick(int position) {
                        Toast.makeText(MainActivity.this,"您长按了第"+position+"条信息",Toast.LENGTH_SHORT).show();
                    }
                });

大功告成

这样RecyclerView的Item的onClick和onLongClick事件就都被触发了。
强调几点:
1我的Bean类就不粘过来了,你们自己请求自己的吧()
2我的Android studio是2.3.3版本,SDK用的26.+的。
3导包我没搬过来,因为那样显得代码量会更繁琐,so 你们自己导吧
4应该没了,

你可能感兴趣的:(点击事件的接口回调)