2014-12-19 4 views
0

Setting a scroll listener на Android AbsListView вызывает немедленный вызов слушателя. Это явно намеренный от the source of AbsListView.java:Почему вызов setOnScrollListener Android ListView сразу вызывает слушателя, хотя прокрутки не было?

public void setOnScrollListener(OnScrollListener l) { 
    mOnScrollListener = l; 
    invokeOnItemScrollListener(); 
} 

Зачем кому-то это?

Настройка прослушивателя кликов/прикосновений не вызывает немедленного вызова слушателя, почему разные прокрутки? Есть ли какое-то разумное обоснование для этого, которое мне не хватает?

Связанного вопрос, в котором кто-то укусил это странное поведение: onScroll gets called when I set listView.onScrollListener(this), but without any touch

ответ

1

Так что слушатель скроллинга информации о начальной позиции списка. Поскольку список всегда прокручивается где-нибудь (даже если он равен 0), в то время как клики и касания не всегда происходят.

В конце концов, это было просто дизайнерское решение, в котором они могли пойти в любом случае. Его не редкость - множество графических интерфейсов сразу же вызовут слушателей при регистрации, если имеются данные. Если это затянет вас, проконсультируйтесь с вашим слушателем, чтобы игнорировать первый вызов.

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

  • Нет связанных вопросов^_^