如果滚动到快速,则无法在ListView上检测到firstVisibleItem



我有一个功能,在滚动时,如果listView的firstVisibleItem是页眉,那么页码(TextView(将增加到1。默认情况下,页码为Page 1 of 55为页眉总数。然后,如果用户向上滚动,并且标题与列表View的顶部相遇,则页码将为Page 2 of 5。问题是,如果滚动过快,页码不会增加,简而言之,firstVisibleItem没有检测到。还有其他方法可以做到这一点吗?

我的标题只是一个简单的列表行。我只是更改了那一行的背景颜色(带条件(,使其看起来像一个页眉。

提前感谢您的帮助。

更新

这是我的onScrollListener,它在那里检测firstVisibleItem

listView.setOnScrollListener(new AbsListView.OnScrollListener() {
private int mLastFirstVisibleItem;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) { }
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if(mLastFirstVisibleItem < firstVisibleItem) {
final MyModel item = adapter.getItem(mLastFirstVisibleItem);
if (item != null) {
if (item.isHeader()) {
if (mLastFirstVisibleItem > 0) {
count++;
currentPage.setText(String.valueOf(count));
}
}
}
}
if(mLastFirstVisibleItem > firstVisibleItem) {
final MyModel item = adapter.getItem(mLastFirstVisibleItem);
if (item != null) {
if (item.isHeader()) {
count--;
currentPage.setText(String.valueOf(count));
}
}
}
mLastFirstVisibleItem=firstVisibleItem;
}
});

我认为它们应该是的一些条件

if(mLastFirstVisibleItem <= firstVisibleItem) {
...
}

if(mLastFirstVisibleItem >= firstVisibleItem) {
...
}

因为当两个值都相同时。。您的if条件届时将为假

而不是每次都更新计数变量可以使用mLastFirstVisibleItem或adapter.getSize或count的组合来显示最新值如果两者相同,这将是最后一项

最新更新