如何在textviews id上创建数组

时间:2018-02-28 17:00:02

标签: java android

所以我想这样做

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

2 个答案:

答案 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()

中对它们进行充气