我具有滚动时的功能,并且如果listView的firstVisibleItem
是标题,则页码(TextView)会增加到1。默认情况下,页码是Page 1 of 5
,5
是标题总数。然后,如果用户向上滚动,并且标题与listView的顶部对齐,则页码将为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;
}
});
答案 0 :(得分:0)
我认为他们应该成为
的条件if(mLastFirstVisibleItem <= firstVisibleItem) {
...
}
或
if(mLastFirstVisibleItem >= firstVisibleItem) {
...
}
因为两个值都相同。 您当时的条件是否为假
而不是每次都更新计数变量 您可以使用mLastFirstVisibleItem或adapter.getSize的组合或计数以显示最新值 如果两者相同,那将是最后一个项目