繁体   English   中英

android setText()多个textViews

[英]android setText() multiple textViews

你好我的布局中有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

创建一个这样的函数:

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("","","");

将每个对象存储在数组中,即。 温度对象在一个单独的数组中。 单独数组中的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);
    }
    }

如果将TextView逻辑分组在一起,则可能需要创建一个包含所有这些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(...);
    }
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM