2015-02-05 11 views
1

ListView는 그림이 뷰에 들어가면 항상 다른 그림을 표시 한 다음 올바른 그림으로 다시 변경합니다. 저는보기가 재활용이라는 것을 이해합니다. 그러나 왜 이것을하고 있습니까?이상한 ListView와 UIL 새로 고침 문제

Gallery 앱이나 QuickPic 앱에는이 동작이 없습니다. 이 응용 프로그램은 빠른 로딩이며 많은 메모리를 소비하지 않습니다.

무슨 일 이니? QuickPic 또는 갤러리와 같은 기능을 수행하려면 어떻게해야합니까?

어댑터 클래스 :

@Override 
    public View getView(final int position, View convertView, ViewGroup parent) {  
     ViewHolder viewHolder = new ViewHolder(); 

     LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.gridview_layout, parent, false); 

      viewHolder.imageView = (ImageView)convertView.findViewById(R.id.GridViewImage); 
      convertView.setTag(viewHolder);    
     } 
     else 
     { 
      viewHolder = (ViewHolder)convertView.getTag(); 
     } 

     GridViewImageLoader.getImageLoader(mContext).displayImage(getItem(position).getImageUrl(), viewHolder.imageView); 


     return convertView; 
    } 

하여 ImageLoader 클래스 :

public class GridViewImageLoader { 

    private GridViewImageLoader(){ } 

    public static ImageLoader getImageLoader(Context context){ 
     try { 
      if (ImageLoader.getInstance().isInited()) { 
       return ImageLoader.getInstance(); 
      } 
      DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder() 
      .showStubImage(R.drawable.automatic_icon) 
      .showImageForEmptyUri(R.drawable.ic_empty) 
      .showImageOnFail(R.drawable.ic_error) 
      .cacheInMemory(true) 
      .cacheOnDisc(true) 
      .considerExifParams(true) 
      .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default 
      .bitmapConfig(Bitmap.Config.RGB_565) // default 
//   .decodingOptions() 
      .displayer(new SimpleBitmapDisplayer()) // default 
      .handler(new Handler()) // default 
      .build(); 

      ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context) 
      .threadPriority(Thread.NORM_PRIORITY) 
      .denyCacheImageMultipleSizesInMemory() 
      .discCacheFileNameGenerator(new Md5FileNameGenerator()) 
      .tasksProcessingOrder(QueueProcessingType.LIFO) 
      .defaultDisplayImageOptions(defaultOptions).build(); 

      ImageLoader.getInstance().init(config); 
      return ImageLoader.getInstance(); 
     } catch (Exception ex) { 
      return null; 
     } 
    } 
} 

당신에게 너무 감사

답변

-1

시도 : 전화를 직전에

viewHolder.imageView.setImageResource(0); 

:

GridViewImageLoader.getImageLoader(mContext).displayImage(getItem(position).getImageUrl(), viewHolder.imageView); 
+0

답변 주셔서 감사합니다. 문제는 여전히 동일합니다. 처음에는 다른 그림을 표시 한 다음보기에 올 때마다 올바른 그림으로 변경합니다. 감사 – YRTM2014