之前作者只是建立了不能响应点击事件的RecyclerView,然而需要实现RecyclerView的点击事件,就需要建立一个接口(在适配器中)。
之前操作的链接
http://blog.csdn.net/maokai1229/article/details/72123600
因为在适配器的ViweHolder中,会有许多Item的新建,而把item看成一个按钮,就需要事先实现按钮的接口(这里不需要考虑在Item的布局文件中声明onClick,因为设立涉及多个按钮响应)
1.在适配器中建立一个接口
public interface ListItemClickListener {
void onListItemClick(int id);
}
2.声明接口 ,这个接口并不在适配器中实现,而是在Activity中,声明接口是为了在构造方法中传入。
public GreenAdapter(int numberOfItems, ListItemClickListener mOnClickListener) {
mNumberItems = numberOfItems;
this.mOnClickListener=mOnClickListener;
viewHolderCount = 0;
}
3.在ViewHolder中引入onClickListener接口 ,在这里的position就相当于控件的ID。
@Override
public void onClick(View view) {
int position = getAdapterPosition();//获取用户点击的item的位置
mOnClickListener.onListItemClick(position);
}
4最后在Activity中实现点击事件的具体逻辑。
@Override
public void onListItemClick(int id){
if(mToast!=null){
mToast.cancel();
}//防止Toast在队列中等待,出现消息提示滞后的情况
String show="Item :"+id+"was clicked";
mToast=Toast.makeText(this,show,Toast.LENGTH_LONG);
mToast.show();
}