listview回收早吗?或者Universal ImageLoader取消错误?或者我的逻辑错了



https://github.com/nostra13/Android-Universal-Image-Loader

除了列表视图中的第一个项目的图像加载任务被取消外,它的工作效果很好。

上面说是Is called when image loading task was cancelled because View for image was reused in newer task

然而,既然视图仍然清晰可见,那么这个视图还不应该被回收吗?我正在使用convertView。

    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        if (getItemViewType(position) == HAS_IMAGE)
        {
            if (convertView == null)
            {
                convertView = li.inflate(R.layout.item_update_pic, null);
                new UpdateWithImageWrapper(convertView, position); // this is where views are looked up and set
            }
            ((UpdateWithImageWrapper) convertView.getTag()).setMyData(data.get(position), position); // this is where the correct data is set to the views and images are set to be loaded
        }
        else
        {
            if (convertView == null)
            {
                convertView = li.inflate(R.layout.item_update, null);
                new UpdateNoImageWrapper(convertView, position);
            }
            ((UpdateNoImageWrapper) convertView.getTag()).setMyData(data.get(position), position);
        }
        return convertView;
    }

有人有解决方案吗?

编辑:只是想补充一点,它与我的所有列表视图都有问题。

使用ImageLoader 1.8.4

也许有办法阻止listview如此迅速地回收?

我终于找到了真正的答案。在我的ImageLoadingListener()
    @Override
    public void onLoadingCancelled(String imageUri, View view) { }

我将图像设置为表示加载错误的图像。事实证明,如果我在调用这个方法时不更改图像,那么一切都很好。

因此,对我来说,真正的问题是,当调用onLoadingCancelled方法时,图像已经加载,并且将此处的imageview设置为表示取消的图像会覆盖真实图像的成功加载。

相关内容

最新更新