Я использую его, но он всегда возвращает 0, хотя я прокручиваю его до конца списка.
Android: ListView.getScrollY() - он работает?
Ответ 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.