3

質問に続いてxいくつかのオプションを尋ねるAndroidアプリがあります。各オプションにはtextviewImageViewおよびが含まれますradio button

の値x(つまり、オプションの数) は一定ではありません。この要件を満たすために、UI コンテンツを動的に追加したいと考えています。

現時点では、レイアウトの xml にコードを記述して、最大 4 つのオプションを表示しています。オプションの数が2の場合、次のようなものを使用してオプション3と4を非表示にします

tvoption1.setVisibility(View.GONE);
tvoption2.setVisibility(View.GONE);

ただし、これはあまりスケーラブルではありません。Javaのオプションを動的に追加する方法を教えてください。または、より良いアプローチがありますか?

4

3 に答える 3

2

次のようにインフレータを使用して、実行時にAViewを追加できます。

LinearLayout linearLayout = (LinearLayout)inflater.inflate(R.layout.news_categories_item, null);

TextView categoryValueTextView = (TextView)linearLayout.findViewById(R.id.news_category_item_value);

mMainLinearLayout.addView(categoryValueTextView);

この例では、TextView を含む LinearLayout が膨張しています。次に、構成要素の TextView への参照が取得され、TextView が (実行時に) メインの線形レイアウトに動的に追加されます ( mMainLinearLayout)。

インフレータ オブジェクトは、 を使用してアクティビティで取得できますgetLayoutInflater()

于 2012-02-20T13:33:40.907 に答える
1

メイン xml とは別に、行レイアウトを作成します

コンテキストから LayoutInflater サービスを取得します。

LayoutInflater inflater=(LayoutInflater)getSystemService(LAYOUT_INFLATE_SERVICE);

次のメソッドを使用してメイン xml にビューを追加します。xml に親レイアウト llParent があり、リスト list からこの llPaent に項目を追加するとします。

for(int i=0;i<list.size();i++)
{
     LinearLayout llView=(LinearLayout)inflater.inflate(R.layout.row);
     //get view id and set values
     TextView txt=(TextView)llView.findViewById(R.id.text);
}
于 2012-02-20T13:25:47.013 に答える
0

AListViewは、複数の類似アイテムを表示するのに適したビューです。ここGridViewにチュートリアルがあります (やなど、アダプターを備えた他のビューも良いGalleryです)。
3 つのビュー (チェックボックス、画像、テキスト) をすべて 1 つの項目として表示できるように、おそらく独自adapterのリストを作成することをお勧めしますが、ネットや SO で利用できる多くの例があります。

于 2012-02-20T13:18:52.110 に答える