1、直接在 Adapter中写接口,代码如下
// 利用接口 -> 给RecyclerView设置点击事件 private ItemClickListener mItemClickListener ; public interface ItemClickListener{ public void onItemClick(int position) ; } public void setOnItemClickListener(ItemClickListener itemClickListener){ this.mItemClickListener = itemClickListener ; }
2、在 Adapter 的绑定数据 onBindViewHolder中,设置回调,代码如下
@Override public void onBindViewHolder(MyViewHolder holder, final int position) { ....绑定数据.... // 点击事件一般都写在绑定数据这里,当然写到上边的创建布局时候也是可以的 if (mItemClickListener != null){ holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 这里利用回调来给RecyclerView设置点击事件 mItemClickListener.onItemClick(position); } }); } //// 给RecyclerView中item中的单独控件设置点击事件 可以直接在adapter中使用setOnClickListener即可 holder.button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context , "position -> "+position , Toast.LENGTH_SHORT).show(); } }); }
3、在对应的 Activity中给RecyclerView设置完数据后,来给 RecyclerView设置点击事件,代码如下
recyclerView = (RecyclerView) findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this)); //设置布局管理器 GridLayoutManager managerGrid = new GridLayoutManager(this, spanCount);//多列 recyclerView.setLayoutManager(managerGrid); recyclerView.setHasFixedSize(true); final MainAdapter adapter = new MainAdapter(this,mDatas); recyclerView.setAdapter(adapter); //设置Adapter // 设置数据后就要给RecyclerView设置点击事件 adapter.setOnItemClickListener(new MainAdapter.ItemClickListener() { @Override public void onItemClick(int position) { // 这里本来是跳转页面 ,我们就在这里直接让其弹toast来演示 Toast.makeText(MainActivity.this , mDatas.get(position) , Toast.LENGTH_SHORT).show(); } });
这篇文档对您是否有帮助?