前言
(本人菜鸟,如有错误请指正)
一直奇怪网上说的Recycler让自己定制点击事件是怎么回事,看了这个大牛的仿知乎 Android客户端源码才知道,他是这样做的—- 写了一个RecyclerView的ViewHolder并且让它实现Onclicklistenner 然后在ViewHolder内部定义了一个ClickResponseListener接口,然后在构造函数里面接收到new 出来的ClickResponseListener接口,然后为item设置OnclickListener时回调ClickResponseListener的方法,来看看大牛具体是怎么做的:
public CardViewHolder(View v, ClickResponseListener clickResponseListener) {
super(v);
//得到外部传递进来的点击事件处理对象,后面onclick中回调它
this.mClickResponseListener = clickResponseListener;
//.................................略
overflow = (ImageView) v.findViewById(R.id.card_share_overflow);
v.setOnClickListener(this);
overflow.setOnClickListener(this);
}
点击时,回调mClickResponseListener的方法
@Override
public void onClick(View v) {
if (v == overflow) {
mClickResponseListener.onOverflowClick(v, getAdapterPosition());
} else {