我要做个图标和文字结合的ListView,图标数据也写在了xml里(见下方的arrays.xml)。但是输出发现,这个 @drawable/latest不是id值,而是这个图片的路径值。我怎么存放呢?以前的写法是map.put("icon", R.drawable.XXX); 就可以绑定图标了...
简短的代码如下:
- String[] iconArr = getResources().getStringArray(R.array.feed_icons);
- String[] titleArr = getResources().getStringArray(R.array.feed_names);
- for(int i=0; i<iconArr.length; i++)
- {
- map = new HashMap<String, Object>();
- ImageView v = new ImageView(getContext());
- map.put("icon", iconArr[i]); //这样写是错误的:( 应该怎样写呢
- map.put("title", titleArr[i]);
- list.add(map);
- }
arrays.xml如下:
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string-array name="feed_names">
- <item>新闻</item>
- <item>视频</item>
- <item>国际新闻</item>
- <item>体育</item>
- <item>艺术</item>
- <item>餐饮</item>
- </string-array>
- <string-array name="feed_icons">
- <item>@drawable/latest</item>
- <item>@drawable/video</item>
- <item>@drawable/world</item>
- <item>@drawable/sports</item>
- <item>@drawable/arts</item>
- <item>@drawable/dining</item>
- </string-array>
- </resources>
特别感谢 LuoYer
- Map<String, Object> map;
- TypedArray ta = getResources().obtainTypedArray(R.array.feed_icons);
- String[] titleArr = getResources().getStringArray(R.array.feed_names);
- for(int i=0; i<titleArr.length; i++)
- {
- map = new HashMap<String, Object>();
- map.put("icon", ta.getResourceId(i, 0));
- map.put("title", titleArr[i]);
- list.add(map);
- }
============================
private void initAdapters(Context context) {
TypedArray mainNavIcon = context.getResources().obtainTypedArray(R.array.mainNavIcon);
String[] mainNav = context.getResources().getStringArray(R.array.mainNav);
mHomeAdapter = new PopupIconTextAdapter(context);
for (int i = 0; i < mainNav.length; i++) {
mHomeAdapter.add(getIconTextListItem(context, mainNavIcon.getResourceId(i, 0), mainNav[i]));
}
}
private IconTextListItem getIconTextListItem(Context context, int mainNavIcon, String mainNavText) {
IconTextListItem iconText = new IconTextListItem(context.getResources().getDrawable(
mainNavIcon), mainNavText);
return iconText;
}
TypedArray mainNavIcon = context.getResources().obtainTypedArray(R.array.mainNavIcon);
String[] mainNav = context.getResources().getStringArray(R.array.mainNav);
mHomeAdapter = new PopupIconTextAdapter(context);
for (int i = 0; i < mainNav.length; i++) {
mHomeAdapter.add(getIconTextListItem(context, mainNavIcon.getResourceId(i, 0), mainNav[i]));
}
}
private IconTextListItem getIconTextListItem(Context context, int mainNavIcon, String mainNavText) {
IconTextListItem iconText = new IconTextListItem(context.getResources().getDrawable(
mainNavIcon), mainNavText);
return iconText;
}