正文  网络通信 > HTTP >

Android的ListView动态获取网络图片

通过ListView可以填充一个列表,在列表里可以加上图片,文字等等,但常规的方法只能加载到本地R.id.xxx的图片,无法做到动态获取。其实要 动态获取也不难,关键是靠人品,一种就是去抠源码,但估计大多数的人都......

通过ListView可以填充一个列表,在列表里可以加上图片,文字等等,但常规的方法只能加载到本地R.id.xxx的图片,无法做到动态获取。其实要 动态获取也不难,关键是靠人品,一种就是去抠源码,但估计大多数的人都是业余学android,估计被上司黑了一天脸之后回到家还能去抠源码?有那时间都 被老婆老妈拉去唠叨了。一种是去搜索,但搜索也得靠人品哦,在这不讨论搜索引擎的问题。

代码段A:

 

1 SimpleAdapert notes = new SimpleAdapert(
2             this,
3             list,
4             R.layout.index_listview_row,
5             new String[] {"docTitle" ,"docSum" ,"docImg"},
6             new int[] {R.id.index_row_title ,R.id.index_row_sum ,R.id.index_row_img} );
7 setListAdapter(notes);

 

如果这样写的话是无法动态显示图片的,如果靠 list里面的map.get("docImg")来获取"http://。。。"去填充R.id.index_row_img,结果当然就是没有图片 啦,其实可以新加一个类,继承SimpleAdapert,重载 public void setViewImage(ImageView v, String value)方法。

代码段B:

 

1 public void setViewImage(ImageView v, String value) {
2      Bitmap bitmap = WebBitMap.getHttpBitmap(value);
3      ((ImageView) v).setImageBitmap(bitmap);
4 }

 

WebBitMap类,自定义,获取到BitMap

01 public class WebBitMap {
02 public static Bitmap getHttpBitmap(String url) {
03 URL myFileUrl = null;
04 Bitmap bitmap = null;
05 try {
06 //Log.d(TAG, url);
07 myFileUrl = new URL(url);
08 } catch (MalformedURLException e) {
09 e.printStackTrace();
10 }
11 try {
12 HttpURLConnection conn = (HttpURLConnection) myFileUrl
13 .openConnection();
14 conn.setConnectTimeout(0);
15 conn.setDoInput(true);
16 conn.connect();
17 InputStream is = conn.getInputStream();
18 bitmap = BitmapFactory.decodeStream(is);
19 is.close();
20 } catch (IOException e) {
21 e.printStackTrace();
22 }
23 return bitmap;
24 }
25 }
代码段A可改写为: 
1 SimpleAdapertSub notes = new SimpleAdapertSub(
2             this,
3             list,
4             R.layout.index_listview_row,
5             new String[] {"docTitle" ,"docSum" ,"docImg"},
6             new int[] {R.id.index_row_title ,R.id.index_row_sum ,R.id.index_row_img} );
7 setListAdapter(notes);

原理很简单,就是执行了之类的方法。