Android ListView:检测滚动完成后第一行/最后一行是否可见

时间:2011-03-10 11:34:08

标签: android listview scroll android-listview

我必须为ListView的子类实现一种分页。 当用户向下滚动列表时,滚动结束并且他查看最后一行,我必须请求下一页数据,如果有的话。向上滚动/第一行/上一页同样的事情。

public class ContactList extends ListView implements OnGestureListener {

    GestureDetector gestureDetector;

    public ContactList(Context context) {
        super(context);
        gestureDetector = new GestureDetector(this);
    }

//Other ctors here...       
}

然后我将一个GestureDetector附加到ListView,转发给它所有的触摸。

public boolean onTouchEvent(MotionEvent ev) {
    return gestureDetector.onTouchEvent(ev);
}

我可以在OnGestureListener.onScroll()中使用getFirst/LastVisiblePosition()检测到第一行/最后一行是否可见?

也许这个方法在滚动发生之前被称为

感谢您的帮助。

1 个答案:

答案 0 :(得分:6)

我认为您需要为ListView设置OnScrollListener并从onScroll回调中收集位置:

    setOnScrollListener(new OnScrollListener() {
        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
            // You cat determine first and last visible items here
            // final int lastVisibleItem = firstVisibleItem + visibleItemCount - 1;
        }

        @Override
        public void onScrollStateChanged(AbsListView arg0, int arg1) {
            // TODO Auto-generated method stub
        }
    });