如何在运行时根据变化的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()
答案 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);
}