2010-08-09 72 views
1

在我的列表視圖中我有不同佈局的項目,實際上他們使用一個子佈局幾次。我不能使用getViewTypeCount()和getItemViewType(),因爲我不知道將使用多少次sublayout。是否有可能優化getView()方法,並使用它的convertView參數,或者我必須每次膨脹視圖?如何優化ListView與不同項目的佈局

回答

2

既然您知道有多少類型的佈局,您可以使用這些方法。

getViewTypeCount() - 這個方法返回的信息很多類型的行你怎麼在你的列表

getItemViewType(int position) - 返回你應該使用基於

然後你誇大佈局位置,其佈局類型信息,只有當它的空並使用getItemViewType確定類型。

查看this教程瞭解更多信息。

UPDATE:

爲了實現結構優化,一些你已經在註釋中所描述我建議:

  • 在對象存儲的觀點稱爲ViewHolder。它會提高速度,因爲您不必每次都在getView方法中調用findViewById()。見List14 in API demos
  • 創建一個通用佈局,該佈局將符合所有屬性組合,並在當前位置沒有它時隱藏某些元素。

我希望能幫到你。如果你可以提供一些XML存根與你的數據結構和信息,你想如何將它映射到行,我將能夠給你更精確的建議

+0

感謝您的輸入,但正如我所說,我不知道在列表視圖中將使用多少個不同的佈局,這就是爲什麼我無法重寫getViewTypeCount() – user411690 2010-08-09 19:16:34

+0

您能否提供更多細節,爲什麼不能預測佈局的位置和數量。這是相當奇怪的。像素提供的anwser是向視圖回收商通知需要的佈局的唯一途徑。 – 2010-08-09 20:21:31

+0

我向Web服務發送http請求以獲取xml響應,例如,只有具有少數屬性子節點的節點,後面跟着各種數量的孩子,所以我創建了兩個xml佈局,一個用於項目,另一個用於子項目,在項目佈局中,我爲其屬性創建了幾個視圖線性佈局,我在其中添加這些子項目 – user411690 2010-08-09 21:15:02