2013-12-10 2 views
0

Так что, когда я нажимаю элемент списка в моем ListView он получает анимированные. Проблема в том, что при анимации я все еще могу щелкнуть по ней, и это нежелательно. Я использую nineOldAndroids и отключить ListItem я делаю:Отключить элемент списка при анимации

set.addListener(new Animator.AnimatorListener() { 
       @Override 
       public void onAnimationStart(Animator animator) { 
        v.setClickable(false); 
         v.setEnabled(false); 
       } 

       @Override 
       public void onAnimationEnd(Animator animator) { 
        v.setClickable(true); 
        v.setEnabled(true); 
       } 

       @Override 
       public void onAnimationCancel(Animator animator) { 

       } 

       @Override 
       public void onAnimationRepeat(Animator animator) { 

       } 
      }); 

setClickable ведет себя странно: это позволит мне выбрать пункт списка в течение короткого времени после начала анимации и после завершения анимации он не позволит я больше его нажимаю (хотя я установил его в true). И setEnabled не работает вообще.

Как я могу отключить элемент списка в то время как анимация работает?

ответ

1

делает метод адаптера IsEnabled (целое положение) вернуться ложным, а анимация по этому пункту происходит.

добавить это к адаптеру

Set<Integer> disabledItems; 
private void setRowEnabled(int position,boolean enabled){ 
    if(enabled){ 
     disabledItems.remove(position); 
    }else{ 
     disabledItems.add(position); 
    } 

} 

@Override 
public boolean isEnabled(int position) { 

    return !disabledItems.contains(position); 
} 

И называют setRowEnabled из onAnimationStart onAnimationEnd вашей анимации

+0

А как именно это сделать? – VM4

+0

Добавлен код в ответ –

+0

Он работал, спасибо. Но вы должны инициализировать Set частный набор disabledItems = новый HashSet (); – VM4

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