2016-09-28 3 views
-4

Когда изображение было загружено, некоторые из изображений дублируются в строках списка, хотя некоторые из строк не имеют идентификатора изображения, вид адаптера дублирует загруженные изображения, когда я неожиданно просматриваю ListViewДублирует изображение в ListView при загрузке

Мой код в GetView

public View getView(final int position, View convertView, ViewGroup parent) { 
    int anotherPosition = position; 


    if (inflater == null) { 
     inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 
    final Holder holder; 
    if (convertView == null) { 
     convertView = inflater.inflate(R.layout.list_item, null); 
     holder = new Holder(); 

     holder.title = (TextView) convertView.findViewById(R.id.description); 
     holder.exp = (TextView) convertView.findViewById(R.id.expiration); 
     holder.someImages = (ImageView) convertView.findViewById(R.id.listview_image); 
     holder.isFavouriteImage = (ImageView) convertView.findViewById(R.id.isFavourite); 

     convertView.setTag(holder); 
     convertView.setTag(R.id.listview_image, holder.someImages); 
     convertView.setTag(R.id.description, holder.title); 
     convertView.setTag(R.id.expiration, holder.exp); 
     convertView.setTag(R.id.isFavourite, holder.isFavouriteImage); 
    } else { 
     holder = (Holder) convertView.getTag(); 
    } 
    RowItemLoyalty rowItemLoyalty = data.get(position); 

    if(rowItemLoyalty != null) { 
     holder.someImages.setTag(position); 
     holder.someImages.setImageBitmap(null); 
     holder.title.setText(data.get(position).getDescription()); 
     holder.exp.setText(data.get(position).getDateEnd()); 

     Log.d("TrueOrFalse", String.valueOf(holder.someImages)); 
     if(holder.someImages != null) { 
      if (data.get(position).getImageId() != 0) { 
       data.get(position).setBitmap(email, password, data.get(position).getImageId(), data.get(position).getBitmap(), new RowItemLoyalty.RetrieveBitmapListener() { 
        @Override 
        public void onSuccess(Bitmap bitmap) { 
         Log.d("ImageID123", String.valueOf(data.get(position).getImageId())); 
         holder.someImages.setImageBitmap(null); 
         if (data.get(position).getBitmap() != null) { 
          Log.d("True", "True"); 
          holder.someImages.setImageBitmap(bitmap); 
         } 
        } 
       }); 
      } 
     } else if(holder.someImages == null) { 
      Drawable placeholder = ContextCompat.getDrawable(context, R.drawable.placeholderwhite); 
      holder.someImages.setImageDrawable(placeholder); 
      Log.d("PlaceHolder2", String.valueOf(placeholder)); 
     } 

     //----------- placeholder for imageview list ----------- 

     //holder.someImages.setImageBitmap(null); 
     if (data.get(position).getBitmap() != null && holder.someImages != null) { 
      holder.someImages.setImageBitmap(data.get(position).getBitmap()); 
      Log.d("PlaceHolder", "Implemented"); 
      Log.d("PlaceHolder", String.valueOf(data.get(position))); 
     } else if (data.get(position).getBitmap() == null) { 
      Drawable placeholder = ContextCompat.getDrawable(context, R.drawable.placeholderwhite); 
      holder.someImages.setImageDrawable(placeholder); 
      Log.d("PlaceHolder2", String.valueOf(placeholder)); 
     } 

     //------------ for favourite logo------------- 
     if (data.get(position).getIsFavorite() == false) { 
      Drawable placeholderIsNotFavourite = ContextCompat.getDrawable(context, R.drawable.ic_favourite_icon); 
      holder.isFavouriteImage.setImageDrawable(placeholderIsNotFavourite); 
     } else if (data.get(position).getIsFavorite() == true) { 
      Drawable favourited = ContextCompat.getDrawable(context, R.drawable.favourite_two); 
      holder.isFavouriteImage.setImageDrawable(favourited); 
     } 
    } 

    return convertView; 
} 

Мой держатель класса

public static class Holder { 
    TextView title; 
    TextView exp; 
    TextView tokensFor; 
    ImageView promotionImages; 
    ImageView isFavouriteImage; 
} 
+0

Показать код 'Holder' класса – Gattsu

+0

Может быть, вы должны реализовать метод OnFailure на RowItemLoyalty.RetrieveBitmapListener – cgr

+0

@ Maven см отредактированные один –

ответ

0

Попробуйте использовать универсальный образ загрузчика Universal Image Loader

установить изображение на ImageView

0

Есть некоторые полезные библиотеки, которые вы можете использовать для загрузки изображений как Glide

Также вы можете увидеть этот Picasso v/s Imageloader v/s Fresco vs Glide

+0

im не уверен, что эти библиотеки применимы, потому что мы используем ID для извлечения изображений. –

-1

проверки Удалить convertView == NULL условия. как

convertView = inflater.inflate(R.layout.list_item, null); 
    holder = new Holder(); 

    holder.title = (TextView) convertView.findViewById(R.id.description); 
    holder.exp = (TextView) convertView.findViewById(R.id.expiration); 
    holder.someImages = (ImageView) convertView.findViewById(R.id.listview_image); 
    holder.isFavouriteImage = (ImageView) convertView.findViewById(R.id.isFavourite);  
+1

Вот как работают плохие приложения ... . С этим, так называемым, решением вы избавитесь от утилизации вида ... – Selvin

+0

@Selvin У вас есть правильное решение для этого? Если ДА, делитесь им. –

+0

@Selvin Если у вас есть хорошее решение, поделитесь им –

Смежные вопросы