RecyclerView的点击事件一般在其对应的adpater类中完成,通过添加接口去调用,在activity中或者fragment中通过对adpater中的接口实例化并重写接口中的函数,通过构造函数传入adpater类中,当点击RecyclerView中的一项内容时通过这个实例的接口去调用activity或fragment中的重写函数。
以以前的微信消息界面的内容为例Android studio简易微信界面-CSDN博客(其中的RecyclerView内容经过修改但不影响)
1.在Myadpater类中添加接口,声明接口的对象listener,并添加构造方法
private onItemClickListener listener;
//添加接口
public interface onItemClickListener{
void onItemClick(int position);
}
//创建构造方法
public void setonItemClickListener(onItemClickListener listener) {
this.listener = listener;
}
2.在其中的MyAdpater类的onBindViewHolder方法中添加代码对每一项item设置点击事件
holder.itemView.setOnClickListener(new View.OnClickListener() {
@SuppressLint("SuspiciousIndentation")
@Override
public void onClick(View view) {
if(listener != null) {
int position = holder.getAdapterPosition();
if(position != RecyclerView.NO_POSITION) //点击的位置是否为空
listener.onItemClick(position);
}
}
});
3.在对应的activity或fragment中实例化接口,点击后可以跳转到以一个activity
myAdpater.setonItemClickListener(new MyAdpater.onItemClickListener() {
@Override
public void onItemClick(int position) {
PersonBean bean = mDatas.get(position);//可以不要
String name = bean.getName();//可以不要
Intent intent = new Intent(getActivity(),MessageActivity.class);
intent.putExtra("yjc",name);//可以不要
if(getActivity() != null) {
getActivity().startActivity(intent);
}
}
});
4.运行结果
任意点击一个联系人(item)跳转到另一个activity