快速滚动使用UniversalImageloader或使用Views的引用优化ListView

我试图使TimeLine有点类似于Facebook或Instagram。 更接近Instagram。 在图像加载我正在使用库UniversalImageLoader。 我的每个ListView项目行的高度可能超过600dp。 通常我一次拿5件物品。

现在出现的问题是,滚动一点点快速的图像互相替换。 由于视图正在被重用。 图像显示大约需要3-4秒,否则将在listView Row中显示错误的图像。

1-如果有人能够知道如何优化/修复这个快速滚动ImageOverlap问题,否则,2-记录EntireView的方法是什么,让我们说一些“ArrayList”并将其放在当前位置。 注意到还有其他事情发生,不仅mediaDp被改变了。

if (convertView == null) { view = inflator.inflate(R.layout.timeline_list_row, parent, false); viewHolder.userDp = (RoundedImageView) view.findViewById(R.id.userDp); viewHolder.mediaDp = (ImageView) view.findViewById(R.id.imagePostedMedia); /************ Set holder with LayoutInflater ************/ view.setTag(viewHolder); final ViewHolder newHolder = viewHolder; } else viewHolder = (ViewHolder) view.getTag(); imageLoader.displayImage(media.imagePath, viewHolder.mediaDp); 

尝试为imageview设置位图选项,如下所示。

 DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.ic_stub) .showImageForEmptyUri(R.drawable.ic_empty) .showImageOnFail(R.drawable.ic_error) .cacheInMemory(true) .cacheOnDisc(true) .considerExifParams(true) .build(); 

现在尝试diplay到imageview as

 imageLoader.displayImage(imageUrls[position], holder.image, options); 

我相信这会奏效。

请参阅代码cacheInMemory(true)属性,显示选项很重要。

我之前已经回答了类似的问题(请这样),请参考这个答案:
当用户快速滚动时,如何在列表适配器中延迟加载视图
我希望这有帮助。