android的listview中的自定义adapter初次打开不显示缓存的网络图片

求助,小弟最近在写用listview 的 adapter ,在 imageview 上显示网络图片,缓存下来的图片保存成 bitmap , 在 adapter 中的 getView 设置了 imageView_image.setImageBitmap(bitmap); 但不知为何每第一次打开列表图片等待很长总是不显示,但在 listview 上下滚动的时候显示出来了,求解

2个回答

你第一次打开的时候应该是没有图片缓存的吧,也就说第一次调用imageView_image.setImageBitmap(bitmap)的时候你的bitmap应该是null吧,bitmap回来的时候你有去刷新界面吗,如果没有的话当然是不管你等待多久都不显示。

zhangh8627
zhangh8627 谢谢你,你的回答给我了解决的灵感
4 年多之前 回复
huangjingfeng_2015
IT_拾荒者 回复zhangh8627: 那你可以在一部线程中持有一个主线程的handler,图片加载完成时调用handler的post试试,runnable中调用adapter调用notifyDataSetChanged
4 年多之前 回复
zhangh8627
zhangh8627 是的,和你说的有点相似,问题原因我也找到,是第一次在保存缓存图片的时候,listview的adapter已经提前执行完毕了。因为android在3.0还是4.0之后,要求不能将网络请求放在主线程中,所以只能异步加载网络图片。虽然问题的原因已经找到但不知如何解决,我尝试过各种方法,没有解决
4 年多之前 回复

下载好图片之后,刷新视图。imageview调用invalidate或者adapter调用notifyDataSetChanged

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问