Jak animować poszczególne elementy w ListView
Robię małą aplikację na Androida opartą na ListView. Gdy użytkownik wybierze jeden lub więcej elementów na liście, a następnie wybierze element menu z paska akcji, chciałbym zrobić małą animację na wybranych elementach na liście, i to jest miejsce, w którym wszystko idzie nie tak.
Nic nie animuje - nic nie zawodzi. Poniższy fragment kodu jest uproszczoną wersją tego, co robię:
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);
}
Kiedy się z tym pogmatwałem, próbując zrozumieć, co było nie tak, w pewnym momencie zastąpiłem element całym ListView, aby wykluczyć animację jako źródło problemu - tak.
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);
}
Ku mojemu zdumieniu zadziałało idealnie!
Więc moje pytanie brzmi - dlaczego nie mogę animować poszczególnych elementów w ListView? Czy jest coś, co robię źle?
Dzięki!
P.S. Dla rekordu ListView jest wypełniony niestandardowymi widokami (LinearLayouts) i sprawdziłem, czy otrzymałem odpowiedni element przed animacją.