在执行Layout Inflater时,TextView中的文本不会更改

时间:2011-11-18 07:34:07

标签: android layout-inflater

在我的应用程序中加载活动时,我正在执行以下操作

setContentView(R.layout.main2);
layoutToAdd = (LinearLayout) findViewById(R.id.linearLayout1);

for(i=0; i<num;i++)
{
    LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
    View view = inflater.inflate(R.layout.camera, null);
    layoutToAdd.addView(view);
}

num的值每次都不同。

在我的LayoutInflater布局中,我有一个文本视图,编辑文本和一个按钮。

现在根据num中提到的次数显示它们,现在每次我想要更改文本和按钮名称。如何设置TextView和Button的文本。

3 个答案:

答案 0 :(得分:2)

在充气布局后设置它们

View view = inflater.inflate(R.layout.camera, null);
TextView tv = view.findViewById(R.id.textviewid); //id defined in camera.xml
Button b = view.findViewById(R.id.buttonid);      //id defined in camera.xml
tv.setText();
b.setText();
layoutToAdd.addView(view);

答案 1 :(得分:0)

我建议你,你应该创建一个只包含LinearLayout的xml文件。

然后programaticall,您应该创建TextViews,EditTexts和Buttons并将其添加到LinearLayout。

您可以设置这些组件的不同属性,如下所示:

以下是设置TextView属性的示例。对于其他组件,您可以设置相同的。

TextView tv=new TextView(context);
tv.setBackgroundResource(R.drawable.textview_bg);
tv.setPadding(20, 5, 40, 5);
tv.setText("set your text");
tv.setLayoutParams(new Gallery.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
tv.setTextColor(Color.RED);
tv.setClickable(true);
tv.setId(id);//where id is an integer which should be unique for each TextView

layout.addView(tv); 

你还需要在for循环中创建和添加所有这三个组件,根据你用来迭代循环的i提供独特的id!你可以有一个String数组用于textviews和按钮,用于在for循环中设置它们的名字,你可以更容易地传递你喜欢在循环中设置它们的字符串。

答案 2 :(得分:0)

您必须存储膨胀视图的引用并存储在List中,然后当您只想修改list.get(2).findViewById(R.id.textbox_id)时。

希望有所帮助。