所以我想这样做
public class MainActivity extends AppCompatActivity {
Textview[] a = {oldtoday00, oldtoday01, ...};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for (int I = 0; I < a.length; I++) {
a[I] = (Textview) findViewById(R.id.a[I]);
}
}
因此,我可以声明循环该数组的文本视图,而不是写入数千行。
但是Textview [] a = {oldtoday00,oldtoday01,...}存在问题; 它说无法解析符号oldtoday00
答案 0 :(得分:1)
资源id
是系统分配的整数标识符。
您可能不知道确切的值,因此您无法直接使用它们。
相反,您会获得View
的父TextView
并访问其子级,这些子级又是您要访问的TextView
。
ConstraintLayout cl = findViewById(R.id.constraint_layout);
TextView[] oldtoday = new TextView[cl.getChildCount()]
for (int i = 0; i < oldday.length; i++) {
oldtoday[i] = (TextView) cl.getChildAt(i);
}
答案 1 :(得分:1)
您可以尝试这种方法:
@IdRes int[] textViewIds = {R.id.firstTestView, R.id.secondTextView, ...};
TextView[] textViewArray = new TextView[textViewIds.length];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for (int i = 0; i < textViewIds.length; i++) {
textViewArray[i] = (TextView) findViewById(textViewIds[i]);
}
}
我们的想法是将视图ID存储到数组中并在onCreate()
中对它们进行充气