5

Wie kann ich die Animation einrichten, wenn der Benutzer ein Element in einer Listenansicht auswählt?Android ListView Animation auswählen

Ich mache meinen eigenen listview-Adapter, um gerade Zeilen mit einem rosa Hintergrund und ungeraden Zeilen mit einem violetten Hintergrund zu setzen. Das einzige Problem ist, dass ich nicht sicher bin, wie ich die Animation für den Benutzer einstellen soll, der auf ein Element klickt ("berührt").

Ich dachte, OnTouchListener zu implementieren und den Hintergrund auf grün zu ändern, wenn ausgewählt, aber ich habe Schaltflächen in den Zeilen, die möglicherweise nicht mehr funktionieren, da OnTouchListener implementiert ist. Ist das wahr?

Code:

public class MyAdapter extends BaseAdapter { 

    public View getView(int position, View convertView, ViewGroup parent) { 
     // position is the element's id to use 
     // convertView is either null -> create a new view for this element! 
     //    or not null -> re-use this given view for element! 
     // parent is the listview all the elements are in  

     if (convertView == null) { 
      convertView = mInflater.inflate(R.layout.your_layout, null); 

      // here you must do whatever is needed to populate the elements of your 
      // list element layout 
      ... 
     } else { 
      // re-use the given convert view 

      // here you must set all the elements to the required values 
     } 

     // your drawable here for this element 
     convertView.setBackground(...); 

     // maybe here's more to do with the view 
     return convertView; 
    } 
} 

Antwort

2

Verwenden Sie ein StateListDrawable mit einem Element definiert für state_selected.

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="true" android:drawable="@drawable/selected" /> 
    ...Other States... 
    <item android:drawable="@drawable/normal" /> 
</selector> 

Auf diese Weise wird die ausgewählte Grafik automatisch ausgewählt, wenn das Listenelement ausgewählt ist.