Java 使用UniversalImageloader或视图引用在ListView中快速滚动优化

Java 使用UniversalImageloader或视图引用在ListView中快速滚动优化,java,android,universal-image-loader,Java,Android,Universal Image Loader,我正在尝试制作一个类似于Facebook或Instagram的时间线。更接近Instagram。在图像加载中,我使用库UniversalImageLoader。我的每个ListView项目行的高度可能都超过600dp。通常我一次取5件物品 现在出现的问题是,滚动稍微快一点的图像会互相替换。因为视图正在被重用。图像显示大约需要3-4秒,否则listView行中将显示错误的图像 1-如果有人知道如何优化/解决此快速滚动图像重叠问题 否则,, 2-记录EntireView的方法是什么,比如说在某个“A

我正在尝试制作一个类似于Facebook或Instagram的时间线。更接近Instagram。在图像加载中,我使用库UniversalImageLoader。我的每个ListView项目行的高度可能都超过600dp。通常我一次取5件物品

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

1-如果有人知道如何优化/解决此快速滚动图像重叠问题 否则,, 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设置为

imageLoader.displayImage(imageUrls[position], holder.image, options);
我相信这会奏效的


请参阅代码cacheInMemory(true)属性以了解显示选项的重要性。

我以前回答过类似的问题(如此),请参考此答案:

我希望这有帮助