如何从drawable转换为int-array

时间:2011-11-21 08:12:27

标签: java android android-layout

我有一个像这样的int数组:

private int icons[] = new int[] {R.drawable.itr300, R.drawable.itr3500};

但我想把它放在array.xml中。

如果我这样做:

<resources>
<array name="icons">
    <item>@drawable/itr300</item>
    <item>@drawable/itr3500</item>
</array>
</resources>

private TypedArray images = getResources().obtainTypedArray(R.array.icons);
private int icons[] = images...

现在我想将Drawable转换为int数组。但我不知道该怎么做。有人可以帮忙吗?

注释:

我认为你的答案很有用。但我还没有找到答案。你能再帮我一次,找到语法错​​误吗?我看起来很好,但我不会工作。

   private TypedArray images = getResources().obtainTypedArray(R.array.icons);
   private int[] icons = new int[images.length()];  
    for (int i = 0; i < icons.length(); i++) {
        icons[i] = images.getResourceId(i, 0);
    }

3 个答案:

答案 0 :(得分:3)

使用getResourceId()

提示:使用循环

答案 1 :(得分:0)

public int getInt (int index, int defValue)   : Retrieve the integer value for the attribute at index.

<强>参数

index要检索的属性索引。

defValue如果未定义属性,则返回值。

public int getInteger (int index, int defValue)

<强>参数

index要检索的属性索引。

defValue如果未定义属性或不是资源,则返回值

for (int i = 0; i < icons.length; i++) {

        icons[i]  = images.getInt (i, int defValue) 
    }

答案 2 :(得分:0)

这样做

        public override View GetView(int position, View convertView, ViewGroup parent)
    {
        View row = null;

        if(convertView == null)
        {
            LayoutInflater i = (LayoutInflater)context.GetSystemService(Context.LayoutInflaterService);
            row = i.Inflate(Resource.Layout.custom_menu, parent, false);
        }
        else
        {
            row = convertView;
        }

        TextView title = row.FindViewById<TextView>(Resource.Id.menu_title);
        ImageView icon = row.FindViewById<ImageView>(Resource.Id.menu_icon);


        title.Text = menuTitle[position];
        //icon.SetImageResource(menuIcon[position]);
        icon.SetImageResource(Icon.GetResourceId(position,-1));

        return row; 
    }