解決:BaseQuickAdapter.setOnItemChildClickListener 失效點擊沒反應、點擊失效的問題

前言:

在發這篇博客之前我確實對BaseQuickAdapter的各種OnItemClick、OnItemLongClick等方法都抱有着不咋好用的看法,但是這篇博客發完之後,我會好好利用這些方法,實在是太好用了,嘖嘖,真香..

 

長話短說,直接丟解決方案,不好使你找我。

Step 1:

檢查你的Adapter裏是否有以下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);

 

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("好用");
                 // ...
                }
            });

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章