Java 如何在ListView内部的imageView上重新绘制图像

Java 如何在ListView内部的imageView上重新绘制图像,java,android,listview,Java,Android,Listview,我有一个类似于收件箱的列表视图。信息来自用户,因此ListView显示文本和userPicture。要显示userPictures,我将显示userPicture(如果存在)或名字母的imageView 当我从WS接收到数据时,我启动一个异步任务,将userPicture ID与DB进行比较,以向WS询问我没有的ID或已经更改的ID 异步任务完成后,我将图片保存在本地,并通知listView数据集已更改,以便查找新图片 我的问题出现在listview上只有一个用户,并且图片没有找到,但是是从WS

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

当我从WS接收到数据时,我启动一个异步任务,将userPicture ID与DB进行比较,以向WS询问我没有的ID或已经更改的ID

异步任务完成后,我将图片保存在本地,并通知listView数据集已更改,以便查找新图片

我的问题出现在listview上只有一个用户,并且图片没有找到,但是是从WS下载的。调用notifyDataSetChanged后,也调用refreshDrawableState和invalidateViews,根据“导致所有视图重新生成和重画”。图像未更改,imageView仍显示字母imageView, 在列表视图中滚动都不会更新它。(我想这是Viewholder的一部分,它循环使用了一些视图,这些视图是为了性能和良好的实践而设计的)

在适配器的getView上,我有一个用于处理图片的语句

if(mIDataPersistence.userHasPicture(userId)
ViewHolder.userImg.setImageBitmap(mIDataPersistence.getUserPicture(userId));
else
ViewHolder.userImg.setImageBitmap(BitmapUtils.createBitMap(userName);
注意:MidTapersistence是一个持久性数据接口,用于访问我在这里使用的所有本地存储的数据。并且BitmapUtils.createBitMap()从用户的第一个字母生成位图


在这种情况下,是否有人可以帮助我或指导我如何使listView更新图像。

为什么不在适配器上调用notifyDataSetChanged(),让它处理要显示的视图的刷新?我调用了它,但没有按要求工作