我有一个包含一些数字的数组:
int[] IDs = new int[] { 2, 5, 6, 11, 15};
布局资源中有许多TextView:
TextView1;
TextView2;
TextView3;
TextView4;
TextView5;
TextView6;
和......
如何在for循环中访问它们(例如)改变它们的文本,如下所示:
for(int i=0;i<IDs.length;i++){
TextView[i].setText = "something";
}
问题:Eclipse无法识别“TextView [i]”。
注意:我想更改那些名称以ID数组中的一个数字结尾的TextView文本。
答案 0 :(得分:2)
你应该这样做,假设IDs
对应于文本视图的id,如果不是,你必须创建id的数组
int[] IDs = new int[] { R.id.textView1, R.id.textView2, R.id.textView3, R.id.textView4, R.id.textView5};
TextView textView = (TextView) rootView.findViewById(IDs[i])
textView.setText = "something";
如果是活动,请删除rootView.
答案 1 :(得分:0)
如果您有给定的布局,则可以迭代布局中的子项。 只需将所有TextView放在一个布局中即可。
例如:
LinearLayout la = findViewById(R.id.myLayout);
for (int i = 0; i < IDs.length; i++){
if (la.getChildAt(i) instanceof TextView){
TextView tv = (TextView) la.getChildAt(i);
}
}
编辑: 如果您的布局中有其他元素,那么计算找到的TextView的数量可能会更好。否则它将找不到所有TextView,如果我们只计算IDs.length。