2013-05-22 14 views
7

下面的一段代碼使同一個視圖膨脹20次。由於充氣成本高昂。我只想給它膨脹一個,併爲20個項目使用相同的視圖,我只想更改UI中的可見數據。重複使用android中的虛擬視圖

LinearLayout ll = new LinearLayout(context); 
for (int i = 0; i < 20; ++i) { 
    View itemView = inflater.inflate(getLayoutId(), parent, false); 
    itemView.setText(data.getName(i); 
    ll.add(itemView); 
} 

我想要這樣的東西。

LinearLayout ll = new LinearLayout(context); 
View itemView = inflater.inflate(getLayoutId(), parent, false); 
for (int i = 0; i < 20; ++i) { 
    itemView.setText(data.getName(i); 
    ll.add(itemView); 
} 

但我不能使用itemView obj這種方式。

任何人都可以告訴我如何多次使用該視圖,一旦它膨脹。

+0

如果你只有一個TextView在你的佈局,那麼你可以通過編程創建的TextView –

+0

您將創建20個不同的來自同一個xml的視圖。如果您需要20個視圖,則無法制作少於20個視圖。 –

+0

textview我給了一個例子,我有幾個更多的意見。 –

回答

0

你不能那樣做。如果你認爲它的代價高昂,那麼找另一種方法來創建你的佈局。

但是,以gridViews爲例。他們創造了很多意見並展示給他們,而且這很好。

您不能將視圖的同一對象2次添加到佈局。每個對象都有自己的狀態,在某種情況下,你會分享所有20個視圖之間的狀態,這是無意義的,這意味着改變一個textView上的文本將會改變所有剩下的狀態。

只需將20個獨立視圖充氣並適當填充即可。

另外考慮使用ListView或GridView,如果你真的有完全相同的視圖,它可以提供一些不錯的功能,如視圖回收。

-1

你應該使用ViewHolder百通:

http://developer.android.com/training/improving-layouts/smooth-scrolling.html#ViewHolder

它應該做的所有的事情你要

+0

我想將這20個視圖添加到水平滾動視圖。列表視圖有適配器,它將提供可重用的轉換視圖。水平滾動視圖是否也有任何可提供數據的適配器。 –

+0

Viewholder不克隆視圖。使代碼在添加到佈局之前克隆視圖 –

+0

viewholder只是一個與ListView一起工作的模式,原始問題意味着ListView不是一個選項 –