2017-01-07 3 views
0

Ich habe eine ListView und ich möchte ein Element daraus entfernen.Animation wird zweimal aufgerufen

Nach dem Benutzer Folien von rechts nach links Animation des weggehenden Artikels beginnt. Dann sollte dieser Artikel entfernt werden.

Mein Code:

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
     if(convertView==null){ 
      convertView = layoutInflater.inflate(R.layout.note,null); 
     } 
     final RelativeLayout relativeLayout = (RelativeLayout) convertView.findViewById(R.id.relativeLayout); 
     TextView textView = (TextView) convertView.findViewById(R.id.textView9); 
     textView.setText(arrayList.get(position)); 
     Button button = (Button) convertView.findViewById(R.id.button10); 
     button.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       if (event.getAction() == MotionEvent.ACTION_DOWN) { 
        x = event.getX(); 
       } 
       if (event.getAction() == MotionEvent.ACTION_UP) { 
        if (Math.abs(event.getX() - x) > (float)150) { 
         Log.e("Point_1", "Begin animate"); 
         arrayList.remove(position); 
         ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(relativeLayout, "x", 0 - relativeLayout.getWidth()); 
         objectAnimator.setDuration(600); 
         objectAnimator.start(); 
         Log.e("Point_1", "Start removing"); 

         ListViewAdapter.this.notifyDataSetChanged(); 
        } 
       } 
       return false; 
      } 
     }); 
} 

Wenn ich meine App fast alles laufen geht in Ordnung. Elemente werden nach dem Verschieben entfernt. Die Animation zum Entfernen der Ansicht ist ebenfalls in Ordnung. Aber! Irgendwie startet ein Gegenstand, der sich direkt unter meiner entfernenden Ansicht befand, auch eine Animation und danach (Animation) wird er nicht aus listView entfernt. Was ist falsch?

Vor dem Entfernen:

enter image description here

und nach (3 Artikeln - 2 Texte):

enter image description here

Antwort

0

Wenn jemand jemals Thema wie diese.

Erstellen Sie ein neues Verzeichnis "anim" im Ordner res des Projekts. Erstellen Sie dann die gewünschte Animation. Schreiben Sie diese in Ihre Klasse (-es)

final Animation animation1 = AnimationUtils.loadAnimation(context,R.anim."name of animation that you've already created"); 
animation1.setAnimationListener(new Animation.AnimationListener() { 
      @Override 
      public void onAnimationStart(Animation animation) { 

      } 

      @Override 
      public void onAnimationEnd(Animation animation) { 
      //Do whatever you've wanted to do. In my case I remove item from listView. 

       arrayList.remove(position); 
       ListViewAdapter.this.notifyDataSetChanged(); 
      } 

      @Override 
      public void onAnimationRepeat(Animation animation) { 

      } 
     }); 
Verwandte Themen