onScroll () проблема (выполняется три раза)

1

В этом фрагменте кода, когда прокрутка заканчивается, метод Log.d() выполняется 3 раза. Почему это происходит и как определить конец списка для выполнения метода только один раз?

Snippet:

public void onScroll(AbsListView view, int firstVisibleItem,
        int visibleItemCount, int totalItemCount) {
    if (getIntent().getBooleanExtra("isFavorites", false) == false) {
        try {
            if (visibleItemCount > 0 && firstVisibleItem + visibleItemCount == totalItemCount) {
                Log.d(TAG, "Adding to list");

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  • 0
    Ваш оператор if будет выполняться столько раз, сколько указано в visibleItemCount . Сколько предметов вы видите, 3?
  • 0
    Да, 3. Итак, как это исправить, чтобы сделать это только один раз?
Показать ещё 1 комментарий
Теги:
listview
onscroll

1 ответ

2
Лучший ответ

Вы можете реализовать boolean переменную, чтобы обеспечить выполнение оператора if только один раз.

boolean executed = false;

а также

if(visibleItemCount > 0 
    && firstVisibleItem + visibleItemCount == totalItemCount 
    && !executed)
{
    executed = true;
}
  • 1
    Как сказал мой учитель - "Бриллиант!" :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню