1,在Adapter中定义一个接口 模仿listview点击事件 方法中传入 view 数据 position
public static interface OnRecyclerviewItemClickLitener{ void onItemClick(View view,ArrayList<String> data); }2,
//声明这个接口对象
private OnRecyclerviewItemClickLitener onRecyclerviewItemClickLitener = null;
3.//暴露一个方法给外面
public void setOnItemClickLitener(OnRecyclerviewItemClickLitener onItemClickLitener){this.onRecyclerviewItemClickLitener = onItemClickLitener;}
4,//在onCreateViewHolder中为每一个item添加监听事件v.setOnClickListener(new View.OnClickListener() {@Override public void onClick(View v) { //将这个数据传递给外面的调用者 //调用的getTag方法 需要在onBindViewHolder中设置和item相关的数据注意:这里是获得position的方法 int position = holder.getLayoutPosition(); if(onRecyclerviewItemClickLitener != null){ onRecyclerviewItemClickLitener.onItemClick(v, (ArrayList<String>) v.getTag(),position); } } });
5,在onBind方法中要设置setTag保存当前view的数据
@Overridepublic void onBindViewHolder(MyViewHolder holder, int position) {holder.textView.setText(data.get(position)); holder.itemView.setTag(data);}6,调用的时候
adapter.setOnItemClickLitener(new MyAdapter_position.OnRecyclerviewItemClickLitener() { @Override public void onItemClick(View view, ArrayList<String> data, int position) { Intent intent = new Intent(RecyclerViewActivity.this,OtherActivity.class); Bundle bundle = new Bundle(); bundle.putString("aa",data.get(position)); intent.putExtras(bundle); startActivity(intent); }