SimpleDraweeView в отображении элемента ListView неправильно

Я использовал SimpleDraweeView в ListView элементе. Если URL-адрес заголовка не равен нулю, он будет отображать изображение из сети или отображать изображение по умолчанию из локального чертежа.

Код выглядит следующим образом:

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        if (convertView == null) {
            convertView = LayoutInflater.from(context).inflate(R.layout.info_contact_item,null);
            holder.ivHeader = findViewById(convertView, R.id.iv_header);
            holder.setTag(holder);
        } else {
            holder = (BaseViewHolder) convertView.getTag();
        }
        final String url = data.get(position).get("headerUrl");
       if (StringUtil.isNull(url)){
            holder .ivHeader.setBackgroundResource(R.drawable.default_head_icon);
       }else{
            ImageRequest imageRequest = ImageRequestBuilder.newBuilderWithSource(Uri.parse(uri))
                    .setAutoRotateEnabled(true) 
                    .setLocalThumbnailPreviewsEnabled(true) //
                    .setProgressiveRenderingEnabled(true) //
                    .build();
            DraweeController controller = Fresco.newDraweeControllerBuilder()
                    .setImageRequest(imageRequest)
                    .setOldController(simpleDraweeView.getController())
                    .setAutoPlayAnimations(true)
                    .build();
            holder.ivHeader.setController(controller);
        }
        return convertView;
    }

Когда я прокручиваю ListView до конца, SimpleDraweeView отображает то же изображение, что и последние данные изображения экрана. У кого-нибудь такая же проблема?


person Freddy    schedule 24.12.2015    source источник
comment
что такое the last screen image data?   -  person Linh    schedule 24.12.2015
comment
шесть элементов будут отображаться на экране, когда я прокручиваю список до следующих шести элементов, простое представление 7-го элемента отображает данные 1-го изображения.   -  person Freddy    schedule 24.12.2015
comment
Пожалуйста, разместите полный исходный код в вашем адаптере. вы должны написать журнал для проверки того, загружает ли 7-й элемент правильный URL-адрес или нет. загрузил ли 7-й элемент тот же URL-адрес, что и данные 1-го изображения   -  person Linh    schedule 24.12.2015
comment
Я проверил журнал, URL-адрес правильный. URL-адрес 7-го элемента равен нулю, а 1-й - правильный URL-адрес   -  person Freddy    schedule 24.12.2015
comment
Я не уверен, потому что никогда не использую if (StringUtil.isNull(url)). можете ли вы заменить его на if (url == null){   -  person Linh    schedule 24.12.2015
comment
то же, что и :TextUtils.isEmpty(url)   -  person Freddy    schedule 24.12.2015
comment
Давайте продолжим обсуждение в чате.   -  person Linh    schedule 24.12.2015


Ответы (1)


Обратитесь к этому коду, когда вы ожидаете, что ваши данные ListView должны быть обновлены, не забудьте вызвать notifydatasetchanged(), который отразит изменения в ListView.

Надеюсь, это поможет :)

person Nakul    schedule 24.12.2015
comment
, спасибо за помощь, я не менял данные, поэтому нет необходимости использовать notifydatasechanged() для обновления списка, я просто перенаправляю список на следующий элемент экрана. - person Freddy; 24.12.2015