RecyclerView的item点击事件

原创 2016年08月30日 22:28:33

适配器代码:
包含三个部分,一个是ViewHolder类,一个是实现父类的方法。另外一个是点击事件的一些方法和接口。其中一个setOnItemClickListener(OnItemClickListener),把传进来的已经实现的接口赋值给成员变量。ViewHolder实现了OnClickListener,每一个条目点击的时候就调用传过来的接口的onItemClick方法。

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.ArrayList;

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {

    /*****************************************Adapter方法开始****************************************************/
    private ArrayList<String> data;

    public MyAdapter(ArrayList<String> data) {
        this.data = data;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
        return new ViewHolder(v);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.textView.setText(data.get(position));
    }

    @Override
    public int getItemCount() {
        return data.size();
    }
    /*****************************************Adapter方法结束****************************************************/


    /*****************************************ViewHolder类开始****************************************************/
    public class ViewHolder extends RecyclerView.ViewHolder
            implements View.OnClickListener {

        public TextView textView;

        public ViewHolder(View itemView) {
            super(itemView);
            textView = (TextView) itemView.findViewById(R.id.textView);
            textView.setOnClickListener(this);
        }

        // 通过接口回调来实现RecyclerView的点击事件
        @Override
        public void onClick(View v) {
            if (itemClickListener != null) {
                itemClickListener.onItemClick(v, getPosition());
            }
        }
    }
    /*****************************************ViewHolder类结束****************************************************/

    /*****************************************item点击接口开始****************************************************/
    public OnItemClickListener itemClickListener;

    public void setOnItemClickListener(
            OnItemClickListener itemClickListener) {
        this.itemClickListener = itemClickListener;
    }

    public interface OnItemClickListener {
        void onItemClick(View view, int position);
    }
    /*****************************************item点击接口结束****************************************************/
}

下面是主Activity代码:

public class MainActivity extends AppCompatActivity {

    private TextView tv;
    private ViewOutlineProvider vp;
    private RecyclerView rcv;
    private ArrayList<String> data = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        rcv = (RecyclerView) findViewById(R.id.rcv);
        data.add("张三");
        data.add("张三1");
        data.add("张三2");
        data.add("张三3");
        data.add("张三4");
        data.add("张三5");
        data.add("张三6");
        MyAdapter adapter= new MyAdapter(data);
        LinearLayoutManager manager = new LinearLayoutManager(this);
        rcv.setLayoutManager(manager);
        rcv.setAdapter(adapter);
        adapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                Toast.makeText(MainActivity.this, data.get(position), Toast.LENGTH_SHORT).show();
            }![这里写图片描述](http://img.blog.csdn.net/20160830222652434)
        });

    }
}

运行效果如下

版权声明:本文为博主原创文章,未经博主允许不得转载。

给RecyclerView的Item添加点击事件

RecyclerView监听事件处理在ListView使用的时候,该控件给我们提供一个onItemClickListener监听器,这样当我们点击Item的时候,会回调相关的方法,以便我们方便处理It...
  • u013184970
  • u013184970
  • 2017年04月25日 15:42
  • 2866

RecyclerView的Item点击事件实现总结

自从开始使用RecyclerView代替ListView,会发现有很多地方需要学习。前一段时间的学习记录有: RecyclerView的滚动事件研究 - DevWiki RecyclerView...
  • u014651216
  • u014651216
  • 2016年11月21日 11:43
  • 5055

【菜鸟之路】RecyclerView添加Item点击事件

今天下午继续在项目中学着做RecyclerView,想给每个Item添加一个点击跳转,翻了翻买的两本书发现没有呃,只能百度+看看网上前辈们的代码了。   翻了一些比较不错的文章,了解到大概的几种...
  • linyishui168
  • linyishui168
  • 2017年03月16日 19:56
  • 511

给recyclerview的item添加点击事件的 一种方法

recyclerview虽然比listview要好,但是有好处的东西总是有坏处的 ,比如,recyclerview就没有对item点击事件的监听方法,之提供了一个onItemTouchListener...
  • lixuSpace001
  • lixuSpace001
  • 2017年06月28日 09:46
  • 894

RecyclerView中的item点击事件

1.在adapter中: private RecyclerView rv; @Override public void onAttachedToRecyclerView(RecyclerView ...
  • Dimples_54
  • Dimples_54
  • 2017年04月06日 16:32
  • 228

给RecyclerView的item添加点击监听事件

给recyclerView的item添加点击事件的监听我知道的有2种,一种是直接给item设置一个id,然后按照正常的流程在adapter里面给item添加方法setOnclickListener()...
  • dl10210950
  • dl10210950
  • 2016年10月25日 08:40
  • 8827

RecyclerView 给Item添加点击事件

转载:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1118/2004.html 添加点击事件 上一节中我们讲了如何...
  • Pansing
  • Pansing
  • 2015年08月01日 13:14
  • 12274

10.RecyclerView中的item点击事件,如何实现

recyclerview的使用方法和listview大同小异,但是使用的adapter确实非常不一样: 1.需要在adapter声明onclickListener()接口, 2.然后创建接口对象, 3...
  • Zuo_XP
  • Zuo_XP
  • 2016年10月11日 09:50
  • 741

RecyclerView onItemClick 按钮和布局都有单击事件时的处理方式

RecyclerView为了给开发者提供更大的自由度,没有默认的提供onItemClick接口。 网上有一种比较简单的实现方式 ,链接如下: http://sapandiwakar.in/recy...
  • zglslyg
  • zglslyg
  • 2015年06月07日 16:32
  • 10984

RecyclerView item内部点击事件、item点击事件冲突

1.recyclerview item内部控件没有点击事件 在recyclerview item内部控件不存在点击事件的情况下。item设置点击事件可通过添加触摸事件recyclerview.add...
  • qq_33129625
  • qq_33129625
  • 2017年12月22日 17:34
  • 231
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RecyclerView的item点击事件
举报原因:
原因补充:

(最多只允许输入30个字)