2013-05-09 2 views
1

Здравствуйте, я использовал анимацию для ArrayAdapter. Я хочу анимировать миниатюру при ее загрузке ... Однако каждый раз, когда загружается миниатюра списка, анимация запускается для каждого элемента адаптера массива. Как следствие, анимация каждого эскиза запускается 5 раз. Что мне нужно сделать, чтобы предотвратить запуск анимации при загрузке любого из элементов?Анимация ленивой загрузки ArrayAdapter

public View getView(int position, View item, ViewGroup parent){ 

     ViewHolder holder; 
     Video video = mVideoList.get(position); 

     if(item == null) 
     { 
      item = mInflater.inflate(R.layout.adapter_recommended_videos, null); 

      holder = new ViewHolder(); 
      holder.title = (TextView)item.findViewById(R.id.adapter_recommended_videos_textview); 
      holder.thumb = (ImageView)item.findViewById(R.id.adapter_recommended_videos_imageview); 

      holder.title.setTypeface(
        Typeface.createFromAsset(mContext.getAssets(), "roboto_medium.ttf")); 

      item.setTag(holder); 
     } 
     else 
     { 
      holder = (ViewHolder) item.getTag(); 

     } 

     holder.title.setText(video.getTitle()); 
     ImageView iv = holder.thumb; 
     if (video.getThumb() != null) { 
      if(!mAnimationFlags.get(position)){ 
       iv.startAnimation(mAnimation); 
       mAnimationFlags.set(position, true); 
      } 
      holder.thumb.setImageBitmap(video.getThumb()); 
     } else { 
      holder.thumb.setImageResource(R.drawable.dummy_video_thumbnail); 
     } 


     return(item); 
    } 


    static class ViewHolder { 
     TextView title; 
     ImageView thumb; 
    } 
+0

Где вы определяете, что миниатюра загружена? – vorrtex

+0

Я вызвал object.setView() внутри конструктора ArrayAdapter ... Но я уже решил это. См. Ответ – user2081338

ответ

1

Nevermind, я решил это сам, я только должен был экземпляр новой анимации в каждом вызове'getView() '. Вот правильный код:

public View getView(int position, View item, ViewGroup parent){ 

     ViewHolder holder; 
     Video video = mVideoList.get(position); 

     if(item == null) 
     { 
      item = mInflater.inflate(R.layout.adapter_recommended_videos, null); 

      holder = new ViewHolder(); 
      holder.title = (TextView)item.findViewById(R.id.adapter_recommended_videos_textview); 
      holder.thumb = (ImageView)item.findViewById(R.id.adapter_recommended_videos_imageview); 

      holder.title.setTypeface(
        Typeface.createFromAsset(mContext.getAssets(), "roboto_medium.ttf")); 

      item.setTag(holder); 
     } 
     else 
     { 
      holder = (ViewHolder) item.getTag(); 

     } 

     holder.title.setText(video.getTitle()); 
     ImageView iv = holder.thumb; 
     if (video.getThumb() != null) { 
      if(!mAnimationFlags.get(position)){ 
       Animation anim = AnimationUtils.loadAnimation(mContext, android.R.anim.fade_in); 
       iv.startAnimation(anim); 
       mAnimationFlags.set(position, true); 
      } 
      holder.thumb.setImageBitmap(video.getThumb()); 
     } else { 
      holder.thumb.setImageResource(R.drawable.dummy_video_thumbnail); 
     } 


     return(item); 
    } 
Смежные вопросы