情况是这样的:我需要把大约四五十个车标在一个listView中展示出来,一般在用ListView的时候撑死十来个图标,按不同分类使用,这倒好办,在创建view的时候使用R.drawable.xxx指定就行了。但我这是四五十个,要是一个个的指定我自己都得承认自己是SB。不过还好折腾了一天终于把这个问题解决了。不过有一个条件要满足:

所有的图标都放在drawable中,并且命名为logo_xxxx.png。不是png,是jpeg或者其它的都行。

Field[] drawableFields = R.drawable.class.getFields();
for (Field field : drawableFields){
if(field.getName().indexOf("logo_")!=-1){
item = new HashMap<String,Object>();
try {
item.put("image", field.getInt(R.drawable.class));
item.put("name", field.getName());
item.put("state", false);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
list.add(item);
}
}
}

应该还有其它的办法,比如直接指定名子加载,不过这个我不会用。

数据完整的加载到ListView,但是显示的名子是图片的名子,我想显示中文,就算显示英文也不能带个“logo_”,当然我还是不愿意手打个对应数组,于是同样的方法我决定再用一次。代码改成下面这样:

Field[] drawableFields = R.drawable.class.getFields();
Field[] stringFields = R.string.class.getFields();
Map<String,String> check_list = new HashMap<String,String>();
for(Field stringField:stringFields){
try {
check_list.put(stringField.getName(), getResources().getString(stringField.getInt(R.string.class)));
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for (Field field : drawableFields){
if(field.getName().indexOf("logo_")!=-1){
item = new HashMap<String,Object>();
try {
item.put("image", field.getInt(R.drawable.class));
item.put("name", field.getName());
item.put("realName", check_list.get(field.getName()));
item.put("state", false);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
list.add(item);
}
}
}

这样我在显示的时候使用realName就可以了。不过我一直觉得这不是正统的方法。。

ListView中加载大量的图片的更多相关文章

  1. listview异步加载sd卡图片

    package com.example.gridview; import java.io.File; import java.io.FileOutputStream; import java.io.I ...

  2. Android之使用Volley框架在ListView中加载大量图片

    1.listview 中的条目要用 Volley 中的 NetworkImageView,如果直接用ImageView也可以,但是要在getView方法中使用url地址设置为imageView的tag ...

  3. Android中ListView异步加载图片错位、重复、闪烁问题分析及解决方案

    我们在使用ListView异步加载图片的时候,在快速滑动或者网络不好的情况下,会出现图片错位.重复.闪烁等问题,其实这些问题总结起来就是一个问题,我们需要对这些问题进行ListView的优化. 比如L ...

  4. Android之ListView异步加载图片且仅显示可见子项中的图片

    折腾了好多天,遇到 N 多让人崩溃无语的问题,不过今天终于有些收获了,这是实验的第一版,有些混乱,下一步进行改造细分,先把代码记录在这儿吧. 网上查了很多资料,发现都千篇一律,抄来抄去,很多细节和完整 ...

  5. android listview 异步加载图片并防止错位

    网上找了一张图, listview 异步加载图片之所以错位的根本原因是重用了 convertView 且有异步操作. 如果不重用 convertView 不会出现错位现象, 重用 convertVie ...

  6. ListView异步加载图片,完美实现图文混排

    昨天参加一个面试,面试官让当场写一个类似于新闻列表的页面,文本数据和图片都从网络上获取,想起我还没写过ListView异步加载图片并实现图文混排效果的文章,so,今天就来写一下,介绍一下经验. Lis ...

  7. android优化从网络中加载图片速度。。

    从网络中加载图片主要要注意两个方面的问题: 1.内存管理:图片占的内存很大,假如图片数量多,很容易让系统抛出out of memory的异常. 同时我们也要注意不同android版本中内存管理的区别. ...

  8. (BUG已修改,最优化)安卓ListView异步加载网络图片与缓存软引用图片,线程池,只加载当前屏之说明

    原文:http://blog.csdn.net/java_jh/article/details/20068915 迟点出更新的.这个还有BUG.因为软引应不给力了.2.3之后 前几天的原文有一个线程管 ...

  9. Listview 异步加载图片之优化篇(有图有码有解释)

    在APP应用中,listview的异步加载图片方式能够带来很好的用户体验,同时也是考量程序性能的一个重要指标.关于listview的异步加载,网上其实很多示例了,中心思想都差不多,不过很多版本或是有b ...

随机推荐

  1. RMQ ---- ST(Sparse Table)算法

    [概述]      RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返 ...

  2. java读取配置文件(properties)的时候,unicode码转utf-8

    有时我们在读取properties结尾的配置文件的时候,如果配置文件中有中文,那么我们读取到的是unicode码的中文,需要我们在转换一下,代码如下 /** * 将配置文件中的Unicode 转 ut ...

  3. iOS 耳机线控

    当你使用iphone的时候听音乐的时候,播放器在后台运行的时候,你仍然可以通过耳机来进行操作,完成曲目切换,快进,快退等功能!当然你的程序不一定是播放器应用,但是我们仍然可以让它具有这个功能,让用户通 ...

  4. UBI文件系统简介

    转:http://www.embedu.org/Column/Column102.htm 在linux-2.6.27以前,谈到Flash文件系统,大家很多时候多会想到cramfs.jffs2.yaff ...

  5. Has anybody found a way to load HTTPS pages with an invalid server certificate using UIWebView?

    If a user attempts to load a https web page in Mobile Safari and the server's certificate validation ...

  6. ubuntu live cd修复grub引导项

    1. 通过Ubuntu Live CD(安装盘,选择try Ubuntu)进入Ubuntu系统 打开终端,依次进行如下操作: 1. sudo fdisk -l 出现如下界面: 2. 然后会看到,有好多 ...

  7. POJ 2983-Is the Information Reliable?(差分约束系统)

    题目地址:POJ 2983 题意:有N个车站.给出一些点的精确信息和模糊信息.精确信息给出两点的位置和距离.模糊信息给出两点的位置.但距离大于等于一.试确定是否全部的信息满足条件. 思路:事实上就是让 ...

  8. MySQL实现删除数据左右空格trim() 左空格ltrim() 右空格rtrim()

    2017-03-23 select trim(字段) from 表         删除左右空格 select ltrim(字段) from 表        删除左空格 select rtrim(字 ...

  9. 【LeetCode-面试算法经典-Java实现】【109-Convert Sorted List to Binary Search Tree(排序链表转换成二叉排序树)】

    [109-Convert Sorted List to Binary Search Tree(排序链表转换成二叉排序树)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 ...

  10. Linux内核性能测试工具全景图

    1.Linux性能监控工具及对应的内核层 2.Linux性能基础测试工具及对应内核层 3.Linux性能监控工具Sar及对应内核层 4.Linux性能调优工具及对应的内核层