在Android中动态创建各种数量的textViews?

时间:2018-09-07 20:39:45

标签: java android

如何在运行时根据变化的textView创建数量不同的integer,而无需显式实例化每个textView的名称?每个创建的textView需要一个引用,因为以后需要将onClickListeners应用于每个引用。

下面的代码工作正常,但是我没有为textView引用每个onClickListeners

    private void buildUI(){
    int variable_int = 3; //this variable changes at run-time, set to 3 for this example

for(int i = 1; i <= variable_int; i++){

            TextView textView = (TextView) findViewById(this);

            textView.setVisibility(View.VISIBLE);
            textView.setText("my textview");

            linLayout.addView(textView);

        }
}

我想到的一个解决方案是,尝试将java.lang.NumberFormatException的{​​{1}}转换为R.id.box#时产生int异常:

findViewById()

2 个答案:

答案 0 :(得分:1)

您可能有一个TextView数组,然后在其上循环。

private TextView[] generatedViews;

private void generateViews(int size) {
    this.generatedViews = new TextView[size];

    for (int i = 0; i < size; ++i) {
        TextView tv = new TextView(this);
        ...
        generatedViews[i] = tv;
    }
}

private void assignListeners() {
    for (TextView tv : generatedViews) {
        tv.setOnClickListener(...);
    }
}

答案 1 :(得分:0)

您还可以在创建TextView时创建事件

for(int i = 1; i <= variable_int; i++){

            TextView textView = (TextView) findViewById(this);

            textView.setVisibility(View.VISIBLE);
            textView.setText("my textview");

           **textView.setOnClickListener(....);**

            linLayout.addView(textView);

        }