之前的时候我们学习了如何使用RecyclerView去显示我们想要展示的数据,不了解的可以看一下之前的文章。
cenmmy:Android大神之路--RecyclerView学习zhuanlan.zhihu.comRecyclerView是将数据以列表的形式给出的,对于列表的每个Item我们可能需要通过点击跳转到另外的Activity查看该Item的详细信息,这个时候就需要对RecyclerView设置点击事件。
对RecyclerView设置点击事件的方式有两种,一种是直接在onBindViewHolder函数中,对Item绑定点击事件,但是这种方式增加了程序的耦合性,我们希望用户能够自己实现点击事件的处理函数。因此我们通过在适配器中设置一个包含onItemClick函数的接口,然后添加setOnItemClickListener方法用于接收用户创建的该接口的实现类对象,最后在onBindViewHolder函数中调用onItemClick方法执行用于传入的对象的onItemClick方法。
第一步:创建OnItemClickListener接口
public interface OnItemClickListener {
void onItemClick(int position);
}
第二步:添加setOnItemClickListener方法
public void setOnItemClickListener(OnItemClickListener listenser) {
this.listener = listenser;
}
第三步:调用setOnItemClickListener方法传入OnItemClickListener的实现类对象。
adapter.setOnItemClickListener(new PersonAdapter.OnItemClickListener() {
@Override
public void onItemClick(int position) {
Log.e("Main", "" + position + "被点击了!!");
}
});
第四步:在onBindViewHolder中调用实现类对象的onItemClick函数。
@Override
public void onBindViewHolder(@NonNull PersonViewHolder holder, final int position) {
holder.bindData(items.get(position));
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (listener != null) {
Log.e("click", "!");
listener.onItemClick(position);
}
}
});
}
第五步:点击Item查看执行结果。