AndroidDev 板


LINE

看到givemepass及sorrel20567两位的热心分享 我也来抛砖引玉一下,一样是跟ListView有关的东西 请先看过以上两位对ListView的分享文,会比较容易懂 这篇的重点是在ListView里显示网路图片 并且加到cache里,如果还在下载就显示ProgressBar 先自订一个类别GetWebImg private HashMap<String, Bitmap> picmap = new HashMap<String, Bitmap>(); //宣告一个HashMap用来存网址及图片用的 public boolean IsCache(String u){//判断是否有暂存 return picmap.containsKey(u); } public boolean IsDownLoadFine(String u){//判断图片是否下载成功 return (picmap.get(u)!= null)?true:false; } public boolean IsLoading(String u){//判断图片是否下载中 return (IsCache(u)==true && IsDownLoadFine(u)==false)?true:false; } public void LoadUrlPic(final String u,final Handler h) { picmap.put(u,null);//放到暂存的空间 new Thread(new Runnable() {//新开一个执行绪去下载 @Override public void run() { Bitmap temp = LoadUrlPic(u);//下载图片的自订函数 if (temp == null){//如果下载失败 picmap.remove(u);//移出暂存空间 h.sendMessage(h.obtainMessage(DOWNLOAD_ERROR,null)); }else{ picmap.put(u, temp);//存起来 h.sendMessage(h.obtainMessage(DOWNLOAD_FINISH,temp)); } } }).start(); } 接下来是自订的BaseAdapter 宣告public ArrayList<String[]> data;//阵列是存网址及文字说明 宣告Handler h = new Handler(){//告诉BaseAdapter资料已经更新了 @Override public void handleMessage(Message msg) { notifyDataSetChanged(); super.handleMessage(msg); } }; @Override public View getView(final int position, View view, ViewGroup parent) { final ViewHolder holder; if (view == null) { view = mInflater.inflate(R.layout.main_content, null); holder = new ViewHolder(); holder.text = (TextView) view.findViewById(R.id.main_content_text); holder.pic = (ImageView) view.findViewById(R.id.main_content_pic); holder.wait = (ProgressBar) view.findViewById(R.id.main_content_wait); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } holder.text.setText(data.get(position)[0]);//显示文字说明 holder.pic.setVisibility(View.INVISIBLE); holder.wait.setVisibility(View.VISIBLE); if (ImgCache.IsCache(data.get(position)[1]) == false){//如果图片没有暂存 ImgCache.LoadUrlPic(data.get(position)[1],h);//下载图片 }else if (ImgCache.IsDownLoadFine(data.get(position)[1]) == true) {//如果已经下载完成,就显示图片并把ProgressBar隐藏 holder.pic.setImageBitmap(ImgCache.getImg(data.get(position)[1])); holder.wait.setVisibility(View.GONE); holder.pic.setVisibility(View.VISIBLE); }else{ //这里是下载中,什麽事都不用做 } return view; } 以上是部份主要的程式码 完整的程式码在↓ http://uploadmirrors.com/download/1CLSSBJP/ListView_WebImg.zip 请大家多指教罗~^^ --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.160.210.180
1F:推 nowar100:已收录 04/22 02:09
2F:推 givemepass:这个很厉害啊...可是我的电脑会变乱码= = 04/22 10:06
3F:→ givemepass:我把程式改成utf-8就好了 :) 04/22 10:07
4F:→ givemepass:请问如果遇到网路慢的图片 下载超过5秒的怎麽办? 04/22 10:08
5F:推 rex1135:不好意思想看一下程式码但是档案都被砍了 囧> 09/13 21:21
6F:→ rex1135:请问有人有备份吗? 谢谢! 09/13 21:22
7F:推 rex1135:阿 原来下一篇就有了XD 09/13 21:24







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP