android setText()多个textViews

时间:2014-01-02 11:07:22

标签: java android android-layout textview performance

您好我的布局中有 3种textViews ,但动态文字相同,但它们之间只有一个差异位置。我想根据Button Click显示和隐藏它们。但是当我必须为只有一个 TEXT 的五个不同TextView编写相同的代码时,会出现问题。请建议我有效的方法,可以减少我的JAVA代码中的行数。

    temperature.setText(temp);
    txt.setText(Name);
    descptxt.setText(descp);

    temperature3.setText(temp);
    txt3.setText(Name);
    descptxt3.setText(descp);

    temperature4.setText(temp);
    txt4.setText(Name);
    descptxt4.setText(descp);  

未来将增加TextView的数量。我担心再次编写相同的Boiler Plate Code和Agian

4 个答案:

答案 0 :(得分:1)

创建一个这样的函数:

void setText(String name,String temp,String descp){
  for(int i=0;i<txt.size();i++){
     temperature.get(i).setText(temp);
     txt.get(i).setText(Name);
     descptxt.get(i).setText(descp);
  }
}

此外,不是为每个textview创建不同的变量,而是创建它的数组。

ArrayList<TextView> temperature=new ArrayList<TextView>();
temperature.add((TextView)findViewById(<id>));
//Same for rest of them

当你想改变文字时:

setText("","","");

答案 1 :(得分:1)

将每个对象存储在数组中,即。温度对象在一个单独的数组中。单独数组中的txt对象和单独数组中的descp对象。

创建一个类似

的方法
 public void setTexts(String temp,String name,String desc){
    for(TextView temperature : temperatureArray){
    //Change for loop declaration according to your code
    //set text for temperature 
temperature.setText(temp);
    }
    for(TextView txt  : txtArray){
    //Change for loop declaration according to your code
    //set text for txt  
txt.setText(name);
    }
    for(TextView descp : descpArray){ 
    //Change for loop declaration according to your code
    //set text for descp 
descp.setText(desc);
    }
    }

答案 2 :(得分:0)

如果您的TextView在逻辑上组合在一起,则可能需要创建一个包含所有View的复合词public class TemperatureView extends ViewGroup { //or whichever layout you use private TextView textView1; private TextView textView2; private TextView textView3; public void setData(TemperatureData data) { textView1.setText(...); textView2.setText(...); textView3.setText(...); } }

{{1}}

在我看来,这是这种情况下最优雅的解决方案。

答案 3 :(得分:0)

你可以使用替代方法,你可以在父布局的子计数上应用循环而不是使用findViewById查找,然后使用运算符实例,你可以找到你想要执行任务的文本视图。