簡體   English   中英

listview回收得早嗎? 還是Universal ImageLoader取消錯誤? 還是我的邏輯錯了?

[英]Is the listview recycling early? Or is Universal ImageLoader canceling in error? Or is my Logic wrong?

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它, 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設置為表示取消的圖像會覆蓋成功加載實際圖像。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM