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

たいすべてのものは、あなたがあなたが別の20を作成している –

+0

、プログラムのTextViewを作成することができます行う必要があります同じXMLからのビュー20ビューが必要な場合は、20ビュー未満にすることはできません。 –

+0

textview私は例を挙げて、私はいくつかのビューを持っています。 –

答えて

0

これはできません。コストがかかると思ったら、レイアウトを作成する別の方法を見つけてください。

しかし、たとえばgridViewsを検討してください。彼らは数多くの意見を作り、それを見せてくれる。

ビューの同じオブジェクトをレイアウトに2回追加することはできません。すべてのオブジェクトには独自の状態があります。あなたの場合、あなたの20のビューの間で状態を共有することは意味がありません。つまり、1つのテキストビューでテキストを変更すると残りのすべてが変更されます。

20個の別々のビューを膨らませ、適切に塗りつぶすだけです。

実際にまったく同じ表示をしている場合は、ListViewまたはGridViewを使用して、表示リサイクルなどの便利な機能を提供することもできます。あなたはViewHolderの摂餌使用する必要があります

-1

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

を、それはあなたがあなたのレイアウトで唯一のTextViewを持っている場合は、

+0

この20のビューを水平スクロールビューに追加したいと思います。リストビューには、再利用可能な変換ビューを提供するアダプタがあります。水平スクロールビューにもデータを提供するアダプタがあるかどうか。 –

+0

Viewholderはビューを複製しません。 –

+0

viewholderはListViewで動作するパターンに過ぎません。オリジナルの質問は、ListViewはオプションではないことを意味します –

関連する問題