2016-03-21 45 views
0

我有一個回收站視圖,在其中填充項目,並且在每個項目中某些元素已固定,但也有一些細節在運行時填充,我的意思是對於某些項目可以有3個詳細視圖,大約10個和大約2個。 由於項目中的視圖是在運行時創建的,因此recyclerview滾動變得緩慢並且出現抖動。在運行時在RecyclerView項目中填充數據的最佳方式

目前我使用的是LinearLayout容器中,我使用container#addView(view)

請提出最佳的方式做同樣的填充項目。

預先感謝您。

+0

使用適配器? – Shark

+0

僅當在數據需要填充時在適配器中使用它時,它將在運行時更改。 –

回答

0

這樣做的最好方法是設置項目視圖類型。

首先,創建多個佈局XML文件。也許你有一個具有單個細節視圖,其中一個具有2個細節視圖,一個具有3個視圖,另一個具有4個視圖,等等。可能有太多變化來爲每個視圖獲取XML佈局,但是可以覆蓋80%-90%他們?針對您最常見的情況進行特定佈局可以提高您的性能。

然後在您的適配器中,您將覆蓋getItemViewType(int position)以針對每個視圖類型返回特定的int值。因此,我們假設您的3個詳細視圖的佈局爲viewType == 3(方便)。如果在位置10處調用此函數,則查看位置10處的數據。如果需要3個細節視圖,則返回viewType爲3.

現在,當調用onCreateViewHolder方法時,將有一個viewType參數告訴你哪一種觀點可以膨脹。您可以使用switch語句,該語句根據視圖類型ID來擴充特定的XML佈局。

這有什麼用?因爲RecyclerView會跟蹤您的視圖類型,並且通過讓每個佈局由特定視圖類型標識,因此RecyclerView知道在需要新視圖時回收該視圖類型的視圖。因此,如果您需要包含3個詳細視圖的視圖,則RecyclerView會將它們歸於viewType == 3,並會爲您提供ViewHolder準備好您的數據。

試試看。你應該看到性能的明顯提升。

+0

謝謝kris,一定會試試這個。 –

相關問題