2016-03-24 19 views
2

Özel bir listview sahibiyim, bir imageview ve textview'u ekleyin. Bu, imageview'u tıklattığımda, animation(rotate)'u başlat. Sorunum: Kaydırma yaparken animasyon durdu.Özel liste görünümünde animasyon nasıl başlatılır

public class AdapterFoodGroups extends BaseAdapter { 

    private static LayoutInflater mInflater = null; 

    Context context; 
    int[] foodImagesId; 
    String[] foodNameList; 
    String[] foodDescriptions; 
    int[] foodTimes; 

    boolean[] loadAnimation; 

    public AdapterFoodGroups(Context context, String[] foodNameList, String[] foodDescriptions, int[] foodTimes, int[] foodImagesId) { 
     // TODO Auto-generated constructor stub 
     this.foodNameList = foodNameList; 
     this.foodDescriptions = foodDescriptions; 
     this.foodTimes = foodTimes; 
     this.foodImagesId = foodImagesId; 
     this.context = context; 

     loadAnimation = new boolean[foodNameList.length]; 
     for (boolean b: loadAnimation) { 
     b = false; 
     } 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 

     final ViewHolder viewHolder; 

     final RotateAnimation anim = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5 f, Animation.RELATIVE_TO_SELF, 0.5 f); 
     anim.setInterpolator(new LinearInterpolator()); 
     anim.setRepeatCount(Animation.INFINITE); 
     anim.setDuration(800); 

     if (convertView == null) { 

     mInflater = (LayoutInflater) context. 
     getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = mInflater.inflate(R.layout.adapter_foodgroup, null); 

     viewHolder = new ViewHolder(); 

     viewHolder.txtFoodName = (TextView) convertView.findViewById(R.id.txtFoodNameGrid); 
     viewHolder.txtFoodDescription = (TextView) convertView.findViewById(R.id.txtFoodDescriptionGrid); 
     viewHolder.txtFoodTime = (TextView) convertView.findViewById(R.id.txtFoodTimeGrid); 
     viewHolder.ivFoodImage = (CircularImageView) convertView.findViewById(R.id.ivFoodImageGrid); 
     viewHolder.ivLoad = (ImageView) convertView.findViewById(R.id.ivLoad); 

     convertView.setTag(viewHolder); 
     } else { 
     viewHolder = (ViewHolder) convertView.getTag(); 
     } 

     if (this.foodImagesId[position] != 0) { 
     viewHolder.ivFoodImage.setImageResource(this.foodImagesId[position]); 
     viewHolder.ivFoodImage.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(context, String.valueOf(position) + " = " + foodNameList[position], Toast.LENGTH_LONG).show(); 
      } 
     }); 
     } 
     if (this.foodNameList[position] != null) { 
     viewHolder.txtFoodName.setText(this.foodNameList[position]); 
     } 
     if (this.foodDescriptions[position] != null) { 
     viewHolder.txtFoodDescription.setText(this.foodDescriptions[position]); 
     } 
     if (this.foodTimes[position] != 0) { 
     viewHolder.txtFoodTime.setText(String.valueOf(this.foodTimes[position]) + " دقیقه"); 
     } 

     viewHolder.ivLoad.setImageResource(R.drawable.load); 
     viewHolder.ivLoad.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      viewHolder.ivLoad.setAnimation(anim); 
      viewHolder.ivLoad.startAnimation(anim); 
     } 
     }); 

     return convertView; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return foodNameList.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    public static class ViewHolder { 
     public CircularImageView ivFoodImage; 
     public ImageView ivLoad; 
     public TextView txtFoodName; 
     public TextView txtFoodDescription; 
     public TextView txtFoodTime; 
    } 
} 

cevap

1

bu deneyin: adaptör Yapıcıda

bu satırları değiştirin: getView() yöntemde

.... 
loadAnimation = new boolean[foodNameList.length]; 
     for (int i=0; i < loadAnimation.length; i++) { 
      loadAnimation[i] = false; 
     } 
.... 

bu ekleyin:

... 

      viewHolder.ivLoad.setImageResource(R.drawable.load); 

      if(loadAnimation[position]){ 
       viewHolder.ivLoad.setAnimation(anim); 
       viewHolder.ivLoad.startAnimation(anim); 
      } else { 
       viewHolder.ivLoad.setAnimation(null); 
      } 

      viewHolder.ivLoad.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        viewHolder.ivLoad.setAnimation(anim); 
        viewHolder.ivLoad.startAnimation(anim); 
        loadAnimation[position] = true; 

       } 
      }); 

... 

yardımcı olur Umut!

+0

Merhaba arkadaşım. Bunu yapıyorum ama çalışmıyor. –

+0

Kodunuzu denedim ve gerçekten bir sorun çıktı. Cevabımı düzenledim ve şimdi benim için çalışıyor. Onu deneyin ve –

+0

için çok çok teşekkür ederim eğer işe yararsa ... çok çok çok yararlı .... teşekkürler çok –

İlgili konular