Страницы

Поиск по вопросам

понедельник, 8 июля 2019 г.

Как понять что ScrollView идет вверх или вниз не повторяя вызов слушателя?

У меня есть ScrollView и есть вот такой слушатель
@Override protected void onScrollChanged(int iX, int iY, int iOldX, int iOldY) { if (mOnScrollListener != null) { mOnScrollListener.onScrollChanged(this, iX, iY, iOldX, iOldY);
if (iY >= iOldY) { mOnScrollListener.onGoDown(); } else { mOnScrollListener.onGoUp(); } } }
Но проблема в том что как только я делаю скролл вниз(к примеру) то метод onGoDown() вызывается раз 100 и это логично я согласен
Какое условие сделать чтоб этот метод был вызван только один раз если юзер делает скролл вверх и один раз если вниз


Ответ

Скорей всего надо держать два флага
boolean isScrollDown, isScrollUp;
if (iY >= iOldY) { if(isScrollDown) return;
mOnScrollListener.onGoDown(); isScrollDown = true; isScrollUp = false; } else { if(isScrollUp) return;
mOnScrollListener.onGoUp(); isScrollDown = false; isScrollUp = true;
}
Это на вскидку

Комментариев нет:

Отправить комментарий