2013-05-09 121 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 2013-05-09 23:07:38

+0

我在ArrayAdapter構造函數中調用了object.setView()...但我已經解決了它。見答案 – user2081338 2013-05-10 14:02:23

回答

1

沒關係,我解決了這個問題由我自己,我只有在)'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); 
    }