如何使用array资源文件中定义的资源数组
2016-05-09 12:55
429 查看
这个题目比较绕,下面先来解释一下:
array.xml文件如下:
<integer-array name="myArray">
<item>@drawable/pic1</item>
<item>@drawable/pic2</item>
<item>@drawable/pic3</item>
<item>@drawable/pic4</item>
</integer-array>
一般我们在程序中这么使用:
int[] picArray = getResources().getIntArray(R.array.myArray);
我们期待拿到的是:
R.drawable.pic1, R.drawable.pic2,R.drawable.pic3,R.drawable.pic4
但是这样拿到的却是0,0,0,0
这种情况在自定义View的时候也会被使用到。
那么怎么解决呢,其实很简单,看代码:
int[] picArray = new int[4];
for (int i = 1; i <=4; i++)
{
try
{
Class res = R.drawable.class;
Field field = res.getField("pic"+i);
picArray[i-1] = field.getInt(null);
}
catch (Exception e)
{
Log.e("MyTag", "Failure to get drawable id.", e);
}
}安装惯例,这种方法只是笨方法,以下方法才是大招:
TypedArray ar = context.getResources().obtainTypedArray(R.array.myArray);
int len = ar.length();
int[] picArray = new int[len];
for (int i = 0; i < len; i++)
picArray[i] = ar.getResourceId(i, 0);
ar.recycle();
for (int i = 0; i < len; i++)
Log.v (TAG, "Res Id " + i + " is " + Integer.toHexString(picArray[i]));
来自:http://stackoverflow.com/questions/4444950/loading-integer-array-from-xml
array.xml文件如下:
<integer-array name="myArray">
<item>@drawable/pic1</item>
<item>@drawable/pic2</item>
<item>@drawable/pic3</item>
<item>@drawable/pic4</item>
</integer-array>
一般我们在程序中这么使用:
int[] picArray = getResources().getIntArray(R.array.myArray);
我们期待拿到的是:
R.drawable.pic1, R.drawable.pic2,R.drawable.pic3,R.drawable.pic4
但是这样拿到的却是0,0,0,0
这种情况在自定义View的时候也会被使用到。
那么怎么解决呢,其实很简单,看代码:
int[] picArray = new int[4];
for (int i = 1; i <=4; i++)
{
try
{
Class res = R.drawable.class;
Field field = res.getField("pic"+i);
picArray[i-1] = field.getInt(null);
}
catch (Exception e)
{
Log.e("MyTag", "Failure to get drawable id.", e);
}
}安装惯例,这种方法只是笨方法,以下方法才是大招:
TypedArray ar = context.getResources().obtainTypedArray(R.array.myArray);
int len = ar.length();
int[] picArray = new int[len];
for (int i = 0; i < len; i++)
picArray[i] = ar.getResourceId(i, 0);
ar.recycle();
for (int i = 0; i < len; i++)
Log.v (TAG, "Res Id " + i + " is " + Integer.toHexString(picArray[i]));
来自:http://stackoverflow.com/questions/4444950/loading-integer-array-from-xml
相关文章推荐
- hdu1260(递推+处理时间)
- 设计模式—观察者模式
- 通俗易懂机器学习——朴素贝叶斯算法
- eclipse导入JDK源码
- Android 下拉刷新框架实现
- Java中二进制、十进制、十六进制及ASCII码与String及字节数组与十六进制之间的转换
- 流媒体开发(三)视频播放
- Calculate Code Metrics with NDepend
- iOS开发多线程篇—线程间的通信
- POJ 3253 Fence Repair
- 验证11gR2 RAC中ASM实例通过gpnp profile获得spfile信息来启动ASM实例
- 修改VNC分辨率大小
- nodejs + redis/mysql 连接池问题
- c++作业5
- 精华阅读第 12 期 | 最新 App Store 审核指南与10大被拒理由?
- iOS 最新版 CocoaPods 的安装流程(非原创)
- 打印1到最大的n位数。
- 网易视频云技术分析:IOS工程常见问题解决方法
- 分页的实现
- 万能RecyclerView 的BaseAdapter