[英]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.