在写listview的下拉刷新和上拉加载时,会遇到如下问题:
怎样判断listview滑动到了顶部或是底部?
下拉刷新时,一般只有当第一个item完全可见时,才处理下拉的逻辑,而上拉加载则处理方式比较多,可以在手指已经离开屏幕但listview由于惯性作用滑动到底部时自动加载,也可以在最底部显示一个按钮,点击加载,加载完成后,又将按钮置于新加载内容的最底部,还可以在最后一个item完全可见时处理手指滑动上拉的逻辑来进行加载,等等。
那么,再细化一点,第一个item完全可见和能见到一部分、最后一个item完全可见和仅仅能见到一部分分别需要怎么判断?如果一个listview的item数目很少,都不足以充满整个屏幕,显然第一个和最后一个item都是完全可见的,这时候,还需要处理下拉和上拉的逻辑吗?如果(不)需要,又该如何判断?本文将对listview的item显示状态做个简单总结,相信除了应用于下拉刷新和上拉加载之外,还会有其他价值。
demo非常简单,就是一个listview界面,主要来看自定义的HwgtListView这个类:
HwgtListView.java:
- public class HwgtListView extends ListView implements OnScrollListener {
- public HwgtListView(Context context, AttributeSet attrs) {
- super(context, attrs);
- setOnScrollListener(this);
- }
- @Override
- public void onScrollStateChanged(AbsListView view, int scrollState) {
- switch (scrollState) {
- case OnScrollListener.SCROLL_STATE_IDLE:
- Log.d("HWGT"