2015-01-06 6 views
0

Я столкнулся со многими подобными мне вопросами. Но у меня есть несколько другой вопрос, и я пока не нашел ответа.Выполнить анимацию только один раз внутри getView(), даже если getView() вызывается несколько раз

Я написал CustomAdapter для своего ListView. Я хотел попробовать что-то новое, реализовав анимации для своих элементов ListView. Следовательно, у меня реализована анимация «снизу вверх», похожая на анимацию карт Google+. Вот код анимации.

Animation animation = AnimationUtils.loadAnimation(getContext(), (position > lastPosition) ? R.anim.up_from_bottom : R.anim.down_from_top); 
animation.setDuration(400); 
rowView.startAnimation(animation); 
lastPosition = position; 

Я написал этот код в getView() моего CustomAdapter.

В моем приложении мне нужно дважды вызвать метод getView(). Все работает нормально до сих пор.

Теперь проблема, с которой я сталкиваюсь из-за вызова getView() более одного раза, анимация карты тоже происходит дважды один за другим, так как мой список загружается дважды.

Как заставить анимацию выполнять только один раз? даже если он находится в методе getView()?

Есть ли способ сделать это?

+0

вы можете отправить любой флаг в свой адаптер и на основе значения флага вы можете выполнить анимацию – Anjali

+0

@ Аняли, я попытался это сделать, но я все равно получаю тот же результат. Один список загружается из сетевого вызова, в то время как другой список загружается из данных, которые я передаю через намерение. Таким образом, getView() вызывается дважды. –

+0

@ShrutiDasgopal: как вы снова вызываете 'getView()'? –

ответ

0

Добавить еще один флаг в GSSListAdapter конструкторе класса, чтобы проверить, getView метода вызывается в первый раз или во второй раз:

public boolean isShowAnimation=false; 

GSSListAdapter(...,...,boolean isShowAnimation){ 
    ... 
    this.isShowAnimation=isShowAnimation; 
} 

теперь использует isShowAnimation для проверки выполнения анимации или не getView метода адаптера.

Смежные вопросы