1. 程式人生 > >recyclerview 的複用或者是item裡的圖片問題,還是圖片隨著數量不斷變大,以及裡button複用

recyclerview 的複用或者是item裡的圖片問題,還是圖片隨著數量不斷變大,以及裡button複用

不管是recyclerview和listview、girdview,都不知道用了多少次了,用著用著還是會出現問題,這裡只是記錄一下,加深印象,寫的有些粗糙,勿怪!出現複用的問題,listview和gridview需要自己定義viewholder,而recyclerview裡面已經定義viewholder。

recyclerview 繫結資料在

onBindViewHolder方法裡面,現在大多數都是基類在外面呼叫,把holder剔除來。

解決複用有很多,

1.比如在bean類裡面新增tag標記,判斷如果已經被點選過了,設定為true等。

2.直接不要複用setIsrecyclable(false) //取消複用,這種不介意使用,剛開始就遇到複用問題,下滑的時候,有些button按鈕直接不見了,滑回來之前有的按鈕也不見,怎麼解決都沒法,看了很多遍邏輯,都沒有總是沒有,,差點使用這種方法,最後想了一下,還是不負重任地解決了。

這裡記錄的是一些小問題,可能會遇到的問題。

1.recyclerview或者listview,外面包裹一層,比如scrollorview、swiperefresh等,而recyclerview或者listview的設定的

android:layout_width="warp_parent"
android:layout_height="warp_parent"

而不是

android:layout_width="match_parent"
android:layout_height="match_parent"

那麼適配會可能會執行3次,我打印出來的是3次,不知道你們是不是,有的是根據數量的多少來的。

2.item裡面有button按鈕,操過後button需要改變背景樣式,

比如,viewpager裡面有幾個頁面,共用一個recyclerview或者listview,裡面的邏輯有很多if()判斷,如果是這個狀態就改變背景樣式,但有可能會出現把其他的item的button背景改變了,再退出重新進又是正常的了,我的解決是if()裡面做了判斷,那麼else()也需要做判斷,就是,如果是就這種狀態,不是那麼就是另一種狀態。需要把else一起做出判斷。

3.imageview,需要理解的是src和background區別,,這裡做一下簡單的介紹,src相當於前景,於background一樣,可以設定圖片和顏色值,而background設定warp_parent,圖片保持原來的大小,設定為match_parent,圖片將被拉伸,src 會受到imageview和scaleType的影響,scaleType有8種模式這裡不做介紹了可以

ImageView的src與background的區別分析

4.item會隨著數量高度不斷地增加

如果你的item裡面父佈局,是warp_match,寬和高都是,那麼可能會到這樣的問題,把父佈局改成match_parent就ok了。