- 浏览: 111598 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (98)
- java (27)
- jms (2)
- jta (0)
- 性能调优及内存分析 (4)
- 设计模式 (14)
- 框架 (6)
- 其它 (9)
- job (1)
- maven (1)
- 服务器 (2)
- 分布式 (3)
- ibatis (1)
- linux (0)
- mysql (0)
- 并发编程 (0)
- java多线程 (2)
- 前端跨域 (1)
- 线程dump分析 (0)
- velocity (0)
- 数据库 (2)
- 协议 (0)
- 监控 (0)
- 开源软件 (2)
- 算法 (0)
- 网络 (1)
- spring (1)
- 编码 (0)
- 数据结构 (0)
- HTable和HTablePool使用注意事项 (0)
- opencms (0)
- android (16)
- 操作系统 (2)
- top (0)
最新评论
-
hold_on:
@Override public boolea ...
android listview的HeadView左右切换图片(仿新浪,网易,百度等切换图片) -
achersnake:
123
Servlet中listener(监听器)和filter的总结 -
angel243fly:
我用了这个方法,还是报同样的错误,还有什么建议吗?
eclipse提示CreateProcess error=87错误的解决方法
最近在做一个天气预报的例子,想在ListView中添加网络图片,在翻阅很多文档,在Baidu上Google很久,终于找到了办法,现在跟大家分享一下解决方案,此篇仅做一个比较简单的实例。
大家知道ImageView类虽然有一个setImageUri方法,但不能直接接受一个由网络地址生成的uri作为参数从而显示图片,我们只好使用其setImageBitmap方法,如:
1
2
3
4
5
|
Bitmap mBitmap = null ;
URL url = new URL(imageUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); InputStream is = conn.getInputStream(); mBitmap = BitmapFactory.decodeStream(is); |
在SimpleAdapter中需要一个数据源,用来存储数据的,在显示图片时我们要用HashMap<>存储一个Bitmap;但仅存取了Bitmap时在ListView中是无法显示图片的,我们需要对SimpleAdapter进行处理。
如下是对SimpleAdaptr处理的主要代码:
1
2
3
4
5
6
7
8
9
10
11
12
|
adapter.setViewBinder( new ViewBinder() {
public boolean setViewValue(View view, Object data,
String textRepresentation) {
//判断是否为我们要处理的对象
if (view instanceof ImageView && data instanceof Bitmap){
ImageView iv = (ImageView) view;
iv.setImageBitmap((Bitmap) data);
return true ;
} else
return false ;
}
}); |
看API对android.widget.SimpleAdapter.ViewBinder的解释:
This class can be used by external clients of SimpleAdapter to bind values to views. You should use this class to bind values to views that are not directly supported by SimpleAdapter or to change the way binding occurs for views supported by SimpleAdapter.
你可以使用该类来处理SimpleAdapter不直接支持的数据。
下面来看看完整的代码:
main.xml 中就是一个ListView , list_item.xml 是为ListView中控件提供布局 ,就是一个ImageView。这两个比较简单,不贴出代码。
主要代码:MainActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
package com.yin.listView;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.SimpleAdapter.ViewBinder;
public class MainActivity extends Activity {
ListView mListView;
View mView;
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.main);
mView = LayoutInflater.from( this ).inflate(R.layout.list_item, null );
mListView = (ListView) findViewById(R.id.mList);
List<HashMap<String, Object>> mListData = getListData();
SimpleAdapter adapter = new SimpleAdapter( this , mListData,
R.layout.list_item, new String[] { "icon" },
new int [] { R.id.image });
adapter.setViewBinder( new ViewBinder() {
public boolean setViewValue(View view, Object data,
String textRepresentation) {
// 判断是否为我们要处理的对象
if (view instanceof ImageView && data instanceof Bitmap) {
ImageView iv = (ImageView) view;
iv.setImageBitmap((Bitmap) data);
return true ;
} else
return false ;
}
});
mListView.setAdapter(adapter);
}
public List<HashMap<String, Object>> getListData() {
List<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
HashMap<String, Object> map = null ;
for ( int i = 0 ; i < 5 ; i++) {
map = new HashMap<String, Object>();
map.put( "icon" , getBitmap());
list.add(map);
}
return list;
}
public Bitmap getBitmap() {
Bitmap mBitmap = null ;
try {
URL url = new URL(imageUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
InputStream is = conn.getInputStream();
mBitmap = BitmapFactory.decodeStream(is);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return mBitmap;
}
} |
注意:此例是显示网络图片,要记得添加权限。
1
|
< uses-permission android:name = "android.permission.INTERNET" >
|
http://www.android-study.com/pingtaikaifa/426.html
发表评论
-
android listview的HeadView左右切换图片(仿新浪,网易,百度等切换图片)
2013-01-15 20:02 2875http://blog.csdn.net/jj120522 ... -
Maven Android Plugin
2013-01-06 16:20 1598Maven Android Plugin h ... -
解决Android模拟器无法用PC键盘输入与模拟器外部功能添加.
2013-01-06 16:20 1463公司发了PC后重新装了Android开发环境. 但是在模拟器上 ... -
Android Fragment使用
2012-12-20 17:29 872你可以像为View一样, 为fragment指定lay ... -
Android异步处理四:AsyncTask的实现原理
2012-12-14 09:08 997在《Android异步处理二:使用AsyncTask异步 ... -
Android异步处理三:Handler+Looper+MessageQueue深入详解
2012-12-14 09:06 984在《Android异步处理一:使用Thread+Hand ... -
Android异步处理二:使用AsyncTask异步更新UI界面
2012-12-14 09:00 1037在《Android异步处理一:使用Thread+Hand ... -
Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面
2012-12-14 08:48 1011概述:每个Android应用程序都运行在一个dalvik ... -
Android 中LayoutInflater的使用
2012-12-11 20:11 0大家好我们这一节讲的是LayoutInflater的使用,在实 ... -
邵洋江 android之tabhost讲解
2012-12-11 19:15 0Tab标签页是界面设计时经常使用的界面控件,可以实现多个分页之 ... -
android Bitmap用法总结
2012-12-10 13:09 0android Bitmap用法总结 http://ww ... -
Parcelable接口应用
2012-11-30 19:53 0Android中Intent传递对象有两个方法,一个是让 ... -
常用的android弹出对话框
2012-11-09 08:47 0http://blog.csdn.net/chenlei ... -
Android实现推送方式解决方案
2012-11-07 13:44 0转:http://www.cnblogs.com/han ... -
Android 之 下拉框(Spinner)的使用
2012-11-06 15:16 0下拉列表 Spinner。 Spinner的使用,可以极 ... -
android ListView添加事件并获取选中项的值
2012-11-05 11:45 0转:http://www.beijibear.com/?aid ... -
Android 用TextView做菜单的多个onClick事件的处理
2012-11-02 19:23 0TextView控件使用OnClick事件监听的时候,会遇到一 ... -
android ListView详解
2012-11-01 09:43 0在android开发中ListView是比较常用的组件, ... -
Android用Application设置全局变量以及使用
2012-10-21 14:08 943如果想在整个应用中使用全局变量,在java中一般是使用静态 ... -
TabSpec和TabHost实例
2012-10-15 08:44 1578TabSpec与TabHost TabHost相当于 ...
相关推荐
在listview中显示网络图片,该类重写simpleadapter,让listview绑定该adapter
android解析网络图片并显示在listview
动态加载网络图片,边下载边显示,图片不会错乱
listview高效显示网络图片,借助的第三方jar包,可以查看源码! 不卡顿,界面漂亮
从网络加载图片显示到listview上,主函数布局是一个ListView item布局是TextView和ImageView 数量的多少视情况而定 再写一个网络请求数据的类 最后面有代码: ”urlConnection 请求数据类的封装“ 类名一定要一样...
Listview显示网络图片 ,不会出现内存溢出问题,移植方便
关于listview item重用导致图片重复加载 图片重新请求
一个基于android的listview加载网络图片的例子源代码
NULL 博文链接:https://wtmusic-yeah-net.iteye.com/blog/1128258
使用listview 实时的显示 在线新闻,网络实时更新,listview滑动 顺畅,网络下载非常快,速度流畅,使用apache连接网络。
Android高级应用源码-listview获取网络图片缓存优化.zip
JSON解析采用AsyncTask异步加载图片并用listview显示 这是项目中URL
本文实例讲述了Android实现Listview异步加载网络图片并动态更新的方法。分享给大家供大家参考,具体如下: 应用实例:解析后台返回的数据,把每条都显示在ListView中,包括活动图片、店名、活动详情、地址、电话和...
android异步加载网络图片到ListView
Android网络下载图片显示到ListView,并实现异步加载。
android异步在网络上读取多张图片,显示在页面布局GridView,viewPager,gallery,ListView
BitMap高效显示策略(二):在ListView上异步加载网络图片 http://blog.csdn.net/ohehehou/article/details/40678741