我有一个Android应用程序会询问一个问题,然后是x
个选项。
每个选项都包含textview
,ImageView
和radio button
。
x
的值(即选项数)不是常数。我想动态添加UI内容以满足此要求。
目前我已经在布局的xml中编写了代码,最多显示4个选项。如果选项数为2,则使用
之类的内容隐藏选项3和4tvoption1.setVisibility(View.GONE);
tvoption2.setVisibility(View.GONE);
然而,这不是很可扩展。谁能告诉我如何动态添加java的选项。或者有更好的方法吗?
答案 0 :(得分:2)
可以在运行时使用这样的inflater添加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()
在活动中获取inflater对象。
答案 1 :(得分:1)
从主xml
单独创建行布局从上下文获取LayoutInflater服务:
LayoutInflater inflater=(LayoutInflater)getSystemService(LAYOUT_INFLATE_SERVICE);
使用以下方法将addview添加到main xml中,我假设您在xml中有父布局llParent,并且您希望从列表列表中添加此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);
}
答案 2 :(得分:0)