2

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

但是,由于该视图仍然清晰可见,因此该视图不应该被回收吗?我正在使用转换视图。

    @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

也许有一种方法可以阻止列表视图如此快速地回收?

4

1 回答 1

0

我终于找到了真正的答案。在我的ImageLoadingListener()

    @Override
    public void onLoadingCancelled(String imageUri, View view) { }

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

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

于 2013-06-06T21:35:41.120 回答