我想在代码中分配很多TextViews(总共272个):
texx1 = (TextView) findViewById(R.id.resul1);
texx2 = (TextView) findViewById(R.id.resul2);
texx3 = (TextView) findViewById(R.id.resul3);
texx4 = (TextView) findViewById(R.id.resul4);
...
texx272 = (TextView) findViewById(R.id.resul272);
关于我如何做到这一点的任何想法?
答案 0 :(得分:0)
使用固定ID并且没有将其静态类型化为属性的唯一选项是TextView列表,其中包含对视图的引用,如下所示:
List<TextView> textviews = new ArrayList<>();
Resources res = getResources();
for (int i = 1; i <=272; i++) {
int id = res.getIdentifier("resul" + i, "id", getContext().getPackageName());
TextView tv = (TextView) findViewById(id);
textviews.add(tv);
}
从此处开始,您必须访问列表项才能访问所需的textview
TextView textViewToAccess = textViews.get(13);
textViewToAccess.setText(...);
答案 1 :(得分:0)
Android有API可以动态(按名称)检索ID常量:Android, getting resource ID from string?,它可用于“批量生产”这些ID。
并且为了存储结果,可以使用数组或集合。
此外,以这种方式编写代码肯定会让你成为必须维护代码的人的敌人。更好的想法是思考两次,并提出一些更好的设计。
答案 2 :(得分:0)
我假设您有 272 TextViews
,所有人都有不同的ID?
您可以通过类似这样的字符串获取int id ...
public static int getIdByName(String name) {
return getResourceIdByName(name, "id");
}
public static int getResourceIdByName(String name, String type) {
StringBuilder s = new StringBuilder(context.getPackageName()).append(":").append(type).append("/").append(name);
return context.getResources().getIdentifier(s.toString(), null, null);
}
所以对你来说,你可以使用上面的内容并循环遍历所有272个TextView并插入List<TextView>
,如下所示:
List<TextView> results = new ArrayList<>();
for (int i = 1; i <= 272; i++) {
TextView textView = (TextView) getIdByName("resul" + i);
results.add(textView);
}