我在滚动视图中多次充气4个线性布局。每个布局的标题都有一个标题。代码段如下所示。
for(int j=0;j<qType.length;j++)
{
LinearLayout.LayoutParams siz = new LinearLayout.LayoutParams(width, height);;
if(qType[j]==0)
{
view1 = getLayoutInflater().inflate(R.layout.layout1, main_layout,false);
siz = new LinearLayout.LayoutParams(width, height/3);
}
else if(qType[j]==1)
{
view1 = getLayoutInflater().inflate(R.layout.layout3, main_layout,false);
siz = new LinearLayout.LayoutParams(width, height/3);
}
else if(qType[j]==2)
{
view1 = getLayoutInflater().inflate(R.layout.layout4, main_layout,false);
siz = new LinearLayout.LayoutParams(width, height/3);
}
else if(qType[j]==3)
{
view1 = getLayoutInflater().inflate(R.layout.layout5, main_layout,false);
siz = new LinearLayout.LayoutParams(width, height/2);
}
siz.topMargin = 25;
main_layout.addView(view1, siz);
}
scroll_layout.addView(main_layout);
scroll_layout.setBackgroundResource(R.drawable.options_background);
setContentView(scroll_layout);
现在每个布局都有textview,我想更改它的文本。如果我通过findviewbyid访问它们并给出settext,只有第一个实例被更改,我想在所有场合更改textview。
for(int k=0;k<NumberQuestions.length;k++)
{
TextView number_title = (TextView)main_layout.findViewById(R.id.number_title);
TextView mcq_title = (TextView)main_layout.findViewById(R.id.mcq_title);
TextView comment_title = (TextView)main_layout.findViewById(R.id.comment_title);
TextView cam_title = (TextView)main_layout.findViewById(R.id.cam_title);
if(qType[k]==0)
{
number_title.setTypeface(myriadpro_bold);
number_title.setText(NumberQuestions[k]);
}
if(qType[k]==1)
{
comment_title.setTypeface(myriadpro_bold);
comment_title.setText(NumberQuestions[k]);
}
else if(qType[k]==2)
{
mcq_title.setTypeface(myriadpro_bold);
mcq_title.setText(NumberQuestions[k]);
}
else if(qType[k]==3)
{
cam_title.setTypeface(myriadpro_bold);
cam_title.setText(NumberQuestions[k]);
}
请帮忙。
答案 0 :(得分:0)
免责声明:我觉得您正在努力反对Android框架,而不是使用它。我的建议有点大修,但我觉得这是正确的做事方式。
我建议使用ListView,因为您多次重复相同的格式。列表视图通常具有对象对象的容器,以及负责将对象映射到列表视图中的特定行的适配器。当您更改基础容器中的数据时,您将调用适配器的回调notifyDataSetChanged()
以通知它您已更改基础数据并提醒它更新列表视图。
答案 1 :(得分:0)
可能所有布局中的TextView android: id
都是相同的,因此解释了方法的行为,findViewById总是返回第一次出现
答案 2 :(得分:0)
如果我是对的,main_layout是xml文件中的名称视图。所以你应该这样使用
view1 = getLayoutInflater().inflate(R.layout.layout1, main_layout,false);
TextView tv = (TextView)main_layout.findViewById(R.id.tv1);
其中tv是layout1.xml中的texview