为了账号安全,请及时绑定邮箱和手机立即绑定

在android中动态创建不同数量的textViews?

在android中动态创建不同数量的textViews?

qq_遁去的一_1 2021-09-03 22:00:40
如何textView在运行时根据变化创建不同数量的sinteger而不显式实例化每个s的名称textView?textView创建的每个都需要有一个参考,因为我需要onClickListeners稍后应用到每个。下面的代码工作得很好,但是我没有提到每个textViewfor onClickListeners:    private void buildUI(){    int variable_int = 3; //this variable changes at run-time, set to 3 for this examplefor(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在尝试转换R.id.box#为intfor时会产生异常findViewById():protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_profile);    //Create textViews in onCreate(). They are invisible by default    TextView box1 = (TextView) findViewById(R.id.box1);    TextView box2 = (TextView) findViewById(R.id.box2);    TextView box3 = (TextView) findViewById(R.id.box3);    TextView box4 = (TextView) findViewById(R.id.box4);    TextView box5 = (TextView) findViewById(R.id.box5);    buildUI(); }private void buildUI(){int variable_int = 3; //this variable changes at run-time, set to 3 for this examplefor(int i = 1; i <= variable_int; i++){            String x = "R.id.box"+i;            int xx = Integer.parseInt(x); //java.lang.NumberFormatException !            TextView textView = (TextView) findViewById(xx);            textView.setVisibility(View.VISIBLE);            textView.setText("my textview");            linLayout.addView(textView);        }}
查看完整描述

2 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

您也许可以拥有一个TextViews数组,然后稍后对其进行循环。


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(...);

    }

}


查看完整回答
反对 回复 2021-09-03
?
呼如林

TA贡献1798条经验 获得超3个赞

你也可以在创建 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);


        }


查看完整回答
反对 回复 2021-09-03
  • 2 回答
  • 0 关注
  • 232 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信