我正在开发一个Android项目,我有很多可绘制的东西.这些绘图资源都命名为喜欢的icon_0.png,icon_1.png... icon_100.png.我想将这些drawable的所有资源id添加到Integers的ArrayList中.(对于那些不了解android的人,只有Java,我在谈论静态变量,在类的静态内部类中,就像R.drawable.icon_0.所有这些静态变量都是整数.)
有没有更有效的方法来做到这一点,而不是逐个添加它们?喜欢
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(R.drawable.icon_1);
list.add(R.drawable.icon_2);
...
list.add(R.drawable.icon_100);
Run Code Online (Sandbox Code Playgroud)
我可以以某种方式循环它们吗?喜欢
for(int i=0; i<100; i++)
{
list.add(R.drawable.icon_+i); //<--- I know this doesn't work.
}
Run Code Online (Sandbox Code Playgroud)
我无法控制这些静态整数所在的文件,并且我无法在运行时创建drawable.
任何帮助,将不胜感激!
编辑
好吧,我读了答案,但我有一个主要问题:我无法访问任何Context需要创建此数组/ id列表的实例(我在静态初始化块中执行),因此getResources()方法,建议的两个答案不会起作用.有没有其他方法这样做?
一种方法是使用反射 API。
沿着线的东西...
Field[] fields = R.drawable.class.getFields();
List<String> names = new ArrayList<String>();
for (Field field : fields) {
if(field.getName().startsWith("icon"))
names.add(field.getName());
}
int resid = getResources().getIdentifier(names.get(0), "drawable", "com.org.bla");
Run Code Online (Sandbox Code Playgroud)
我还没有测试过这个,但你明白了。
| 归档时间: |
|
| 查看次数: |
1118 次 |
| 最近记录: |