前言:
在发这篇博客之前我确实对BaseQuickAdapter的各种OnItemClick、OnItemLongClick等方法都抱有着不咋好用的看法,但是这篇博客发完之后,我会好好利用这些方法,实在是太好用了,啧啧,真香..
长话短说,直接丢解决方案,不好使你找我。
Step 1:
检查你的Adapter的convert方法里是否有以下AddOnClickListener的方法?
// 设置监听
helper
.addOnClickListener(R.id.iv_back)
.addOnClickListener(R.id.iv_user_avatar)
.addOnClickListener(R.id.tv_comment_count)
.addOnClickListener(R.id.iv_favorite)
.addOnClickListener(R.id.lav_focus)
.addOnClickListener(R.id.tv_shared)
.addOnClickListener(R.id.tv_speak);
// 新版SDK设置监听方法,此方法设置在Activity里或Fragment
adapter.addChildClickViewIds(
R.id.tv_item_good,
R.id.tv_item_collection,
R.id.tv_item_share,
R.id.iv_more
);
Step 2:
麻蛋自从找到问题的所在,我就饺子这个问题实在是太幼稚了,我都不好意思贴出来解决方案,检查你Activity或Fragment的Adapter在适当的时候是否set了Listener?
mAdapter.setOnItemChildClickListener(this);
以上俩步骤其实就已经解决问题了,除非你嵌套了很多层的Adapter把自己搞懵了,不然设置完监听和回调之后绝壁就好使了,如果还是不好使,那么看下面:
Step 3:
mAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
LinearLayout layout = (LinearLayout) view.getParent();
// RelativeLayout layout = (RelativeLayout) view.getParent();
// 完了用你嵌套的布局去找到你点击所在的控件,就OK了
TextView tvPrint = layout.findViewById(R.id.tv_print);
// ImageView ivCover = layout.findViewById(R.id.iv_cover);
tv.setText("好用");
// ...
}
});