4
回答
Android 的 ListView 动态获取网络图片
华为云实践训练营,热门技术免费实践!>>>   

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

代码段A:

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

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

代码段B:

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

WebBitMap类,自定义,获取到BitMap

public class WebBitMap {
public static Bitmap getHttpBitmap(String url) {
URL myFileUrl = null;
Bitmap bitmap = null;
try {
//Log.d(TAG, url);
myFileUrl = new URL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
HttpURLConnection conn = (HttpURLConnection) myFileUrl
.openConnection();
conn.setConnectTimeout(0);
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
bitmap = BitmapFactory.decodeStream(is);
is.close();
} catch (IOException e) {
e.printStackTrace();
}
return bitmap;
}
}
代码段A可改写为:
SimpleAdapertSub notes = new SimpleAdapertSub(
            this,
            list,
            R.layout.index_listview_row,
            new String[] {"docTitle" ,"docSum" ,"docImg"},
            new int[] {R.id.index_row_title ,R.id.index_row_sum ,R.id.index_row_img} );
setListAdapter(notes);

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

转自:http://android-dev.baike.com/article-7432.html

举报
无鸯
发帖于6年前 4回/3K+阅
顶部