Подтвердить что ты не робот

Android: ListView.getScrollY() - он работает?

Я использую его, но он всегда возвращает 0, хотя я прокручиваю его до конца списка.

4b9b3361

Ответ 1

getScrollY() на самом деле является методом View, а не ListView. Это относится к количеству прокрутки всего вида, поэтому оно почти всегда будет 0.

Если вы хотите знать, насколько прокручивается содержимое ListView, вы можете использовать listView.getFirstVisiblePosition();

Ответ 2

Он работает, он возвращает верхнюю часть прокрученной части представления в пикселях из верхней части видимого вида. См. getScrollY(). В основном, если ваш список занимает полный вид, тогда вы всегда получите 0, потому что верхняя часть прокрученной части списка всегда находится в верхней части экрана.

Что вы хотите сделать, чтобы увидеть, находитесь ли вы в конце списка, это примерно так:

public void onCreate(final Bundle bundle) {
     super.onCreate(bundle);
     setContentView(R.layout.main);
     // The list defined as field elswhere
     this.view = (ListView) findViewById(R.id.searchResults);
     this.view.setOnScrollListener(new OnScrollListener() {
          private int priorFirst = -1;
          @Override
          public void onScroll(final AbsListView view, final int first, final int visible, final int total) {
               // detect if last item is visible
               if (visible < total && (first + visible == total)) {
                    // see if we have more results
                    if (first != priorFirst) {
                         priorFirst = first;
                         //Do stuff here, last item is displayed, end of list reached
                    }
               }
          }
     });
}

Причиной для firstFirst-счетчика является то, что иногда события прокрутки могут генерироваться несколько раз, поэтому вам нужно только отреагировать на первый раз, когда будет достигнут конец списка.

Если вы пытаетесь сделать список автоматического роста, я бы предложил этот tutorial.