So animieren Sie einzelne Elemente in ListView

Ich mache eine kleine Android App, die auf einer ListView basiert. Wenn der Benutzer ein oder mehrere Elemente in der Liste auswählt und anschließend ein Menüelement aus der Aktionsleiste auswählt, möchte ich eine kleine Animation für die ausgewählten Elemente in der Liste erstellen. Hier kann es zu Problemen kommen.

Nichts animiert - und nichts scheitert. Der folgende Code ist eine vereinfachte Version von dem, was ich tue:

private void animateListViewItem()
{
    TranslateAnimation anim = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f,Animation.RELATIVE_TO_SELF, 0.0f,
            Animation.RELATIVE_TO_SELF, -1.0f,Animation.RELATIVE_TO_SELF, 0.0f);
    anim.setDuration(2000);
    View v = fragment.getListAdapter().getView(fragment.getListView().getFirstVisiblePosition(), null, null);
    v.startAnimation(anim);
}

Als ich damit herumgespielt habe, um herauszufinden, was los war, habe ich irgendwann das Element durch die gesamte ListView ersetzt, um die Animation als Ursache des Problems auszuschließen - so.

private void animateListViewItem()
{
    TranslateAnimation anim = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f,Animation.RELATIVE_TO_SELF, 0.0f,
            Animation.RELATIVE_TO_SELF, -1.0f,Animation.RELATIVE_TO_SELF, 0.0f);
    anim.setDuration(2000);
    fragment.getListView().startAnimation(anim);
}

Zu meinem Erstaunen hat das perfekt funktioniert!

Meine Frage lautet also: Warum kann ich die einzelnen Elemente in einer ListView nicht animieren? Oder mache ich etwas falsch?

Vielen Dank!

P.S. Für den Datensatz ist die ListView mit benutzerdefinierten Ansichten (LinearLayouts) gefüllt, und ich habe vor dem Animieren überprüft, ob ich das richtige Element erhalte.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage