android 异步下载图片后更新ListView的图片显示
ListView的适配器继承BaseAdapter适配器的getView方法里面有:loadImage(data.get(position).get("pic").toS...
ListView的适配器继承BaseAdapter
适配器的getView方法里面有:
loadImage(data.get(position).get("pic").toString(), viewHolder.ivImg);
loadImage方法:
private void loadImage(final String url, final ImageView imageView)
{
new Thread(new Runnable()
{
@Override
public void run()
{
handler.obtainMessage(1, getBitmap(url)).sendToTarget();//其中getBitmap(url)是一个下载网络图片的方法,返回Bitmap类型。
}
}).start();
}
主线程的handler:
handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
******.setImageBitmap((Bitmap) msg.obj);
}
};
我想问的是我应该怎么在handler里面更新UI,我要更新的是viewHolder.ivImg,而我又不能指定具体的ImageView来更新。
请各位大神提个好方法出来啊,万分感激~ 展开
适配器的getView方法里面有:
loadImage(data.get(position).get("pic").toString(), viewHolder.ivImg);
loadImage方法:
private void loadImage(final String url, final ImageView imageView)
{
new Thread(new Runnable()
{
@Override
public void run()
{
handler.obtainMessage(1, getBitmap(url)).sendToTarget();//其中getBitmap(url)是一个下载网络图片的方法,返回Bitmap类型。
}
}).start();
}
主线程的handler:
handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
******.setImageBitmap((Bitmap) msg.obj);
}
};
我想问的是我应该怎么在handler里面更新UI,我要更新的是viewHolder.ivImg,而我又不能指定具体的ImageView来更新。
请各位大神提个好方法出来啊,万分感激~ 展开
1个回答
2014-01-30
展开全部
你传bitmap?万一bitmap比较大,你又多线程,很容易OOM的。你在getView里面用asyncTask来就好,何必用handler。Message只能传一个Object对象。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询