1. 程式人生 > >RecyclerView實現Item點選事件方法三/四

RecyclerView實現Item點選事件方法三/四

此係列文章隔上次釋出有一段時間,原因就是懶(其實是比較忙),今天來說下剩下的兩種方法,如何優雅的實現

對於方法三我這裡就不說了,因為有很多文章都有說明,那就是基於RecyclerView.OnItemTouchListener,剛開始我也是按這種思路實現的,發現確實很優雅,當時也沒發現有什麼不妥,然後專案中就用起來了,後來發現還是有問題的。問題點:當你的ItemView中有View也要設定點選事件時,那麼這個時候ItemViewClickListener事件與子View的ClickListener事件衝突

那麼如何解決這個問題了?下面我們接著介紹第4種實現方案

此方法我也是Google到一位大牛的方案,我覺得可行,大家可以參考下

首先要定義一個自己的RecyclerView類我就不說了,直接上程式碼

//初始化
private void init() {
        addOnChildAttachStateChangeListener(new OnChildAttachStateChangeListener() {
            @Override//當子View被新增到Window
            public void onChildViewAttachedToWindow(View view) {
                //此處引數的view就是ItemView
                //這裡可以這麼實現
view.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ //這裡就可以回撥自己定義的介面方法了 } }); } @Override//當子View從Window中移除/解綁 public void onChildViewDetachedFromWindow
(View view) { //此處引數的view就是ItemView //那麼這裡我們可以做些什麼事了? //兩種方案: //1.啥也不做; // do nothing //2.把view的點選事件取消 view.setOnClickListener(null); } }); }

好啦,看到這裡我們其實已經說完了,一切盡在程式碼中,廢話我們就不多說了,相信大家看完之前的兩種實現方式以及第三種實現方式,這種方式一看就懂了,如有問題,還請大家能給我提出問題與疑問