如何在ListView中的imageView上重新绘制图像

时间:2014-09-04 14:53:02

标签: java android listview

我有一个类似收件箱的ListView。信息来自用户,因此ListView显示文本和userPicture。要显示userPictures,我显示userPicture(如果存在)或imageView的名字字母。

当我从WS接收数据时,我启动了一个asynctask,它将userPicture id与DB进行比较,向WS询问我没有的或者已经改变的那些。

asyncTask完成后,我在本地保存图片并通知listView数据集已更改,以便查找新图片。

我的问题出现在listview上只有一个用户,但是找不到图片但是从WS下载了。在调用notifyDataSetChanged之后,还调用了refreshDrawableState和invalidateViews,根据documentation“导致所有视图重建并重新绘制”。图像没有改变,imageView仍然显示字母ImageView, 既不滚动listView更新。 (我猜这是Viewholder的一部分,它可以回收用于性能的视图,并且具有良好的实用性)。

在适配器的getView上我有一个以下语句来处理图片

if(mIDataPersistence.userHasPicture(userId)
ViewHolder.userImg.setImageBitmap(mIDataPersistence.getUserPicture(userId));
else
ViewHolder.userImg.setImageBitmap(BitmapUtils.createBitMap(userName);

注意:mIDataPersistence是持久性数据接口,用于访问我在这里使用的本地存储的所有数据。和BitmapUtils.createBitMap()从用户的第一个字母开始生成位图。

任何人都可以帮助我,或指出我在这种特殊情况下制作listView更新图像的方法。

0 个答案:

没有答案