2012-02-20 233 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); 
}