我有一个功能,在滚动时,如果listView的firstVisibleItem
是页眉,那么页码(TextView(将增加到1。默认情况下,页码为Page 1 of 5
,5
为页眉总数。然后,如果用户向上滚动,并且标题与列表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的组合来显示最新值如果两者相同,这将是最后一项