Java 如何在textviews id上创建数组

Java 如何在textviews id上创建数组,java,android,Java,Android,所以我想这样做 public class MainActivity extends AppCompatActivity { Textview[] a = {oldtoday00, oldtoday01, ...}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVie

所以我想这样做

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

资源ID是系统分配的整数标识符

您可能不知道确切的值,因此无法直接使用它们

相反,您将获得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);
}

您可以尝试以下方法:

@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中对其进行膨胀

这是什么意思?这只是一个简单的数组声明。。。你的目的是什么?您想如何使用它?@N00b不是您的变量名吗?您最好使用oldtoday[0]。。。如果您不需要确切地使用名称'oldtoday00'。是的,但是如果我声明int数组或字符串数组,则此textview会导致问题。如果我像您所说的那样,则此textview可以工作。今天00是我的textviewid@N00b请添加更多代码和说明。@@@我不知道你想做什么…你错过了最后一行。TextView[]a=newtextView[]{findviewbydr.id.oldtoday00,…};是的,但我不想写所有的文本框,我想通过像这样循环int I=0来声明它们;I