2012-02-20 103 views
3

我有一個Android應用程序,它提出了一個問題,然後是x選項數。 每個選項包含textview,ImageViewradio button在android中動態添加UI內容

x的值(即選項的數量)不是恆定的。我想動態添加UI內容以滿足此要求。

目前我已經在佈局的xml中編寫代碼來顯示最多4個選項。如果選項的數量是2我隱藏選項3和4使用類似的東西

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

但是,這不是可縮放的。任何人都可以告訴我如何動態地爲java添加選項。還是有更好的方法?

回答

2

View可以在運行時通過使用充氣這樣加入:

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()可以在活動中獲取充氣器對象。

0

A ListView對於顯示幾個相似的項目是一個很好的觀點。 Here是一個教程(其他視圖與適配器也很好,如GridViewGallery)。
您可能想要爲列表創建您自己的adapter,因此您可以將所有三個視圖(複選框,圖像和文本)顯示爲一個項目,但網上提供了很多示例以及此處的示例所以。

1

分別創建行佈局,從主XML

獲取LayoutInflater從上下文服務:

LayoutInflater inflater=(LayoutInflater)getSystemService(LAYOUT_INFLATE_SERVICE); 

使用下面的方法addview主XML,我假設你有父佈局llParent XML和你想從列表中添加這個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); 
}