引用android控件的典型方法是这样的:
TextView tv = (TextView)findViewById(R.id.tv);
其中R.id.tv是引用我的xml控件的整数。
问题是我想使用字符串“R.id.tv”进行引用。这可能吗?
假设我有多个控件:
tv1,
tv2,
tv3,
tv4,
tv5,
我如何将其置于某种循环中并通过控件进行交互。我想我会使用循环计数器来引用不同的控件。怎么样?感谢。
答案 0 :(得分:3)
一种方法是将id放入数组并通过下标引用。
int[] ids = { R.id.tv1, R.id.tv2 /* etc. */ };
for (int i = 0; i < ids.length; ++i) {
TextView tv = (TextView)findViewById(ids[i]);
}
答案 1 :(得分:2)
尝试下一步
private int getIdResourceByName(String aString)
{
String packageName = "com.myProject.myPackage"; // set your package name here
int resId = getResources().getIdentifier(aString, "id", packageName);
return resId;
}
...
for (int i = 1; i<=5; i++) {
TextView tv = (TextView) findViewById(getIdResourceByName("tv" + Integer.toString(i)));
...
}
答案 2 :(得分:1)
答案 3 :(得分:1)
我不明白你为什么要这样做,它非常丑陋,低效,并且可能导致维护问题和错误。
为什么不使用集合(例如ArrayList)存储对所有控件的引用?