在MyAdapter中定义如下接口,模拟ListView的OnItemClickListener:
//define interface
public static interface OnItemClickListener {
void onItemClick(View view , int position);
}
1
2
3
4
声明一个这个接口的变量:
private OnItemClickListener mOnItemClickListener = null;
1
在onCreateViewHolder()中为每个item添加点击事件:
public MyViewHolder2 onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
itemView2= LayoutInflater.from(context).inflate(R.layout.item2,parent,false);
MyViewHolder2 myViewHolder2=new MyAdapter2.MyViewHolder2(itemView2);
//将创建的View注册点击事件
itemView2.setOnClickListener(this::onClick);
return myViewHolder2;
}
将点击事件转移给外面的调用者:
public void onClick(View v) {
if (mOnItemClickListener != null) {
//注意这里使用getTag方法获取position
mOnItemClickListener.onItemClick(v,(int)v.getTag());
}
}
注意上面调用接口的onItemClick()中的v.getTag()方法,这需要在onBindViewHolder()方法中设置和item的position:
@Override
public void onBindViewHolder(@NonNull MyViewHolder2 holder, int position) {
holder.itemView.setBackgroundColor(Color.WHITE);
holder.name.setText(items2.get(position).get("USER").toString());
holder.message.setText(items2.get(position).get("MESSAGE").toString());
holder.imageView.setImageResource(Integer.parseInt(items2.get(position).get("png").toString()));
//将position保存在itemView的Tag中,以便点击时进行获取
holder.itemView.setTag(position);
}
最后暴露给外面的调用者,定义一个设置Listener的方法():
public void setOnItemClickListener(OnItemClickListener listener) {
this.mOnItemClickListener = listener;
}
在Activity(Fragment)中使用:
myAdapter2.setOnItemClickListener(new MyAdapter2.OnItemClickListener(){
@Override
public void onItemClick(View view , int position){
Intent intent=new Intent(context,MainActivity2.class);
startActivityForResult(intent,1);
}
});
这样即可实现点击item跳转到MainActivity4中。
————————————————
版权声明:本文为CSDN博主「qq_58890087」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_58890087/article/details/127440563
AS跳转页面
最新推荐文章于 2023-10-29 21:34:00 发布