3

我有一个 android 应用程序,它会问一个问题,然后是x几个选项。每个选项都包含一个textview,ImageView和一个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)。

可以在 Activity 中通过使用来获取 inflater 对象getLayoutInflater()

于 2012-02-20T13:33:40.907 回答
1

从主 xml 单独创建行布局

从上下文获取 LayoutInflater 服务:

LayoutInflater inflater=(LayoutInflater)getSystemService(LAYOUT_INFLATE_SERVICE);

使用以下方法将视图添加到主 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);
}
于 2012-02-20T13:25:47.013 回答
0

AListView是显示几个相似项目的好视图。是一个教程(带有适配器的其他视图也很好,例如GridViewGallery)。
您可能希望为列表创建自己adapter的,因此您可以将所有三个视图(复选框、图像和文本)显示为一个项目,但在网上以及 SO 上都有很多可用的示例。

于 2012-02-20T13:18:52.110 回答