我一直在試圖實現兩個ListViews之間的同步,但我似乎無法使其工作順利。兩個ListView之間的同步滾動滯後
這個想法是,列表視圖在LinearLayout中彼此相鄰排列。每個列表視圖的行可能非常複雜(即它們可能包括幾個TextView,CheckBoxes,Spinners或Buttons)。用於每個ListView的數據集明顯不同,因此左列表視圖中的行可以具有與右列表視圖中的行 不同的高度。我想要做的是讓他們在同一個位置具有相同的行高。
我設法做到這一點,使用相同的適配器的列表和介紹中介模式。它現在所做的是在getView返回視圖之前,我調用了我的中介體中的一個方法,它幾乎做了以下操作:
需要繪製LV1中的行號3。 安卓繪製它並確定它需要40個像素高。 就在它返回之前,我調用我的中介,它檢查第二個listview中同一行的高度(我保留中介中的兩個適配器實例的引用)位置,並返回它的70像素。 我將LV1中第3行的高度設置爲70並重繪它。
問題是,無論何時它需要繪製一個新行,它都會做很多工作,並且會有瘋狂的getView()調用。 另外,當我改變其中一個列表視圖的行的高度,以便它匹配另一個時,我強制在該列表視圖中完全重繪所有可見的子項,這增加了更多的滯後。
我的問題是 - 我的概念是完全錯誤的?我在這裏錯過了什麼嗎?有沒有更簡單的方法來做我想做的事?
| LV 1 | | LV 2 |
| 1 | | 1 |
| 2 | | 2 |
| 3 | | 3 |
| 4 | | 4 |
| 5 | | 5 |
問題是,當我在運行時更改視圖的高度時,所有可見視圖都會重繪,並且需要很長時間。 – 2014-09-12 10:51:15
或者你應該預先計算所有的值並設置一個標準高度 – Metehan 2014-09-12 10:52:06
然後你應該在通知適配器之前計算這個值,然後當你得到所有的值時開始繪製 – Metehan 2014-09-12 10:57:47