我想通过for循环填充一些TextView。 这不是一个真正的代码示例,但我希望它足以让您了解我正在尝试做什么。 我甚至不确定这是可能的,但我希望有人找到了办法。
data-
答案 0 :(得分:6)
我认为一个选项是Resources.getIdentifier()
for (int i = 0; i < 6; i++){
TextView textView = (TextView) findViewById( getResources().getIdentifier(String.format("dataTV%d", i), "id", getPackageName() ) )
if(textView != null)
textView.setText(data[i]);
}
<强>更新强>
要避免许多功能调用:
TextView textView;
Resources rresources = getResources();
String packageName = getPackageName();
for (int i = 0; i < 6; i++){
textView = (TextView) findViewById( resources.getIdentifier(String.format("dataTV%d", i), "id", packageName ) )
if(textView != null)
textView.setText(data[i]);
}
答案 1 :(得分:2)
您应该尝试将这些TextView放在LinkedList中:
List<TextView> tvs;
tvs = new LinkedList();
tvs.add(new TextView(this));
...
而不是你的循环你可以去:
for(TextView t : tvs){
t.setText("text");
}
答案 2 :(得分:1)
您可以通过实际创建TextView来实现此目的。
for (int i = 0; i < 6; i++){
TextView textView = new TextView(this);
textView.setText(data[i]);
}
答案 3 :(得分:1)
我看到大多数答案是以TextView
方式编制的,如果TextView
中有xml layout
而R.id
中存档Enums
,则可以这样做:
enum drw {
tv0(R.id.dataTV0),
tv1(R.id.dataTV1)
//and more
private int drawable;
drw(int i){
this.drawable = i;
}
public int getdrawable(){
return drawable;
}
}
现在循环播放
Map<Integer, TextView> map = new HashMap<Integer, TextView>();
for (drw d : drw.values())
map.put(d.getdrawable(), (TextView) v.findViewById(d.getdrawable()));
TextView myPet = dogMap.get(drw.tv0.getdrawable);
答案 4 :(得分:0)
你要么必须使用reflection来使用字符串来访问textview对象。或者将所有单独的文本视图也转换为数组(这是有意义的,因为它们使用相同的名称编号)并像任何其他数组一样访问它们