关于在XML中定义drawable数组/id

最近自己做了些小程序玩,本来在程序中通过定义结构数组的方式放入带图标的菜单,但是后来发现每次修改菜单的话,就要修改重新编译程序,很麻烦,就开始找在XML中定义数组,然后再在程序中调用的方式,这样一劳永逸。

开始定义的数组:

private subMenuData[] mydata = new subMenuData[]{new subMenuData("唐三", "男", R.drawable.img1),new subMenuData("小舞", "女", R.drawable.img2),
  new subMenuData("宁荣荣", "女", R.drawable.img3),new subMenuData("奥斯卡", "男", R.drawable.img4),
  new subMenuData("马洪俊", "男", R.drawable.img5),new subMenuData("戴沐白", "女", R.drawable.img6),
  new subMenuData("朱笃清", "女", R.drawable.img7)};

修改后的程序:

首先XML中的定义:

<string-array name="menuItemIconID">
   <item >@drawable/img1</item>
   <item >@drawable/img2</item>
   <item >@drawable/img3</item>
   <item >@drawable/img4</item>
   <item >@drawable/img5</item>
   <item >@drawable/img6</item>
   <item >@drawable/img7</item>
</string-array>     
        
JAVA中:(其中subMenuData为自定义数据结构)

TypedArray IconIDType = context.getResources().obtainTypedArray(R.array.menuItemIconID);

for(int i=0;i<Name.length;i++)
{
int IconID;
IconID = IconIDType.getResourceId(i, 0);
mydata[i] = new subMenuData(Name[i], Sex[i], IconID);
System.out.println(String.format("IconID=0x%x", IconID));

}
IconIDType.recycle();

注意TypeArray的obtainTypedArray()和recycle()要成对使用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值