android可以像整数数组一样存储drawable id吗?

时间:2015-04-23 09:26:42

标签: android android-drawable android-resources

我想要drawable id整数值数组,我可以使用integer-array标记在res/values/XXX.xml integer-array中存储strings.xml。下面是在<integer-array name="icons"> <item>1</item> <item>2</item> <item>3</item> <item>4</item> </integer-array>

中声明的整数数组
@drawable/someImage

但我希望将可绘制的图像ID(如<group-id>/members)存储为xml中的整数数组。

OR 是否有任何替代方法可以将可绘制的整数id存储为xml中的整数数组。

3 个答案:

答案 0 :(得分:7)

我认为TypedArray正是您所寻找的。我有样品使用它。如果您有兴趣,请查看以下代码:

首先integer-array中的res/values/arrays.xml

<integer-array name="frag_home_ids">
    <item>@drawable/frag_home_credit_return_money</item>
    <item>@drawable/frag_home_transfer</item>
    <item>@drawable/frag_home_balance</item>
    <item>@drawable/frag_home_charge</item>
    <item>@drawable/frag_home_finance_cdd</item>
    <item>@drawable/frag_home_finance_ybjr</item>
    <item>@drawable/frag_home_more</item>
</integer-array>

第二,以编程方式获取资源整数值:

TypedArray tArray = getResources().obtainTypedArray(
            R.array.frag_home_ids);
int count = tArray.length();
int[] ids = new int[count];
for (int i = 0; i < ids.length; i++) {
    ids[i] = tArray.getResourceId(i, 0);
}
//Recycles the TypedArray, to be re-used by a later caller. 
//After calling this function you must not ever touch the typed array again.
tArray.recycle();

第三次,调用如下的整数值:

holder.iv.setImageResource(ids[position]);

当然,您可以通过这种方式获得stringcolorintegerlayoutmenu的整数值。

我希望这些代码会激励你。

答案 1 :(得分:2)

查看文档,特别是More Resource Types文章。引用:

  

键入数组
  以XML格式定义的TypedArray。您可以使用它来创建其他资源的数组,例如drawables。

     

例:
  保存在res / values / arrays.xml的XML文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array name="icons">
        <item>@drawable/home</item>
        <item>@drawable/settings</item>
        <item>@drawable/logout</item>
    </array>
    <array name="colors">
        <item>#FFFF0000</item>
        <item>#FF00FF00</item>
        <item>#FF0000FF</item>
    </array>
</resources>

答案 2 :(得分:1)

您可以使用string array

提取物:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="media_names">
        <item>Big Buck Bunny</item>
        <item>Elephants Dream</item>
        <item>Sintel</item>
        <item>Tears of Steel</item>
    </string-array>

    <string-array name="media_uris">
        <item>http://archive.org/download/BigBuckBunny_328/BigBuckBunny_512kb.mp4</item>
        <item>http://archive.org/download/ElephantsDream_277/elephant_dreams_640_512kb.mp4</item>
        <item>http://archive.org/download/Sintel/sintel-2048-stereo_512kb.mp4</item>
        <item>http://archive.org/download/Tears-of-Steel/tears_of_steel_720p.mp4</item>
    </string-array>
</resources>

你想要实现的是什么,我不能100%告诉你这是否是你的最佳选择。