80,337
社区成员
发帖
与我相关
我的任务
分享
mListView = (P2RefreshListView) findViewById(R.id.wine_select);
// 数据源准备
mList = new ArrayList<String>();
// 适配器初始化
mAdapter = new SelectAdapter(this, mList);
// 适配器装置
mListView.setAdapter(mAdapter);
2,获取网络数据
当然网络数据肯定是异步线程获取的,获取OK之后使用Handler发送出来;
或者使用谷歌推荐的第三方框架Volley来获取数据(这个框架的请求结果回调是在主线程的,可以直接更新UI),
3,更新UI
数据获取之后,可以通过Handler的Message通知主线程,这个时候主线程就可以更新Listview的UI了;此时listview中的imageview并未有bitmap加载,而是bitmap对应的url;
4,处理imageview对应url加载图片的问题
在listview的适配器当中可以开启一个新的线程(或者使用开源第三方框架imageloader,这个很成熟,一句话就能搞定)
,在新的线程里面去下载该url对应的bitmap图片,
比如:
new Thread() {
@Override
public void run() {
try {
//下载图片
DefaultHttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
HttpResponse response = client.execute(get);
Bitmap bm = null;
if (response.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = response.getEntity();
byte[] by = EntityUtils.toByteArray(entity);
bm = getBitmap(by, width, height);//图片压缩
}
Message msg = mHandler.obtainMessage();
if (null != bm) {
// 下载成功
// 保存下载的图片
cache.put(url, bm);//将图片保存到缓存 该缓存以url为key,以bitmap为对应值
msg.what = LOADING_IMAGE;
} else {
msg.what = LOADING_FAIL;
}
// 发送通知
msg.obj = url;
mHandler.sendMessage(msg);
} catch (Exception e) {
e.printStackTrace();
}
};
}.start();
这样将bitmap存入本地和缓存当中后就可以发message,并将对应的url带出。handler接收后处理该message,imageview跟url是由tag属性绑定。这时可以准确的更新到该imageview的视图。[/quote]谢谢,终于解决了
mListView = (P2RefreshListView) findViewById(R.id.wine_select);
// 数据源准备
mList = new ArrayList<String>();
// 适配器初始化
mAdapter = new SelectAdapter(this, mList);
// 适配器装置
mListView.setAdapter(mAdapter);
2,获取网络数据
当然网络数据肯定是异步线程获取的,获取OK之后使用Handler发送出来;
或者使用谷歌推荐的第三方框架Volley来获取数据(这个框架的请求结果回调是在主线程的,可以直接更新UI),
3,更新UI
数据获取之后,可以通过Handler的Message通知主线程,这个时候主线程就可以更新Listview的UI了;此时listview中的imageview并未有bitmap加载,而是bitmap对应的url;
4,处理imageview对应url加载图片的问题
在listview的适配器当中可以开启一个新的线程(或者使用开源第三方框架imageloader,这个很成熟,一句话就能搞定)
,在新的线程里面去下载该url对应的bitmap图片,
比如:
new Thread() {
@Override
public void run() {
try {
//下载图片
DefaultHttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
HttpResponse response = client.execute(get);
Bitmap bm = null;
if (response.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = response.getEntity();
byte[] by = EntityUtils.toByteArray(entity);
bm = getBitmap(by, width, height);//图片压缩
}
Message msg = mHandler.obtainMessage();
if (null != bm) {
// 下载成功
// 保存下载的图片
cache.put(url, bm);//将图片保存到缓存 该缓存以url为key,以bitmap为对应值
msg.what = LOADING_IMAGE;
} else {
msg.what = LOADING_FAIL;
}
// 发送通知
msg.obj = url;
mHandler.sendMessage(msg);
} catch (Exception e) {
e.printStackTrace();
}
};
}.start();
这样将bitmap存入本地和缓存当中后就可以发message,并将对应的url带出。handler接收后处理该message,imageview跟url是由tag属性绑定。这时可以准确的更新到该imageview的视图。