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

问题描述:

我必须为ListView的子类实现一种分页。 当用户向下滚动列表时,滚动结束,他查看最后一行,我必须请求下一页数据(如果有的话)。向上滚动/第一行/上一页同样的事情。Android 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()

也许这种方法被称为之前的滚动发生?

谢谢你的帮助。

我认为你需要设置OnScrollListener您ListView和从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 
     } 
    }); 
+0

耻辱!当我搜索google搜索“android scroll listener”时,我发现没有OnScrollListener的东西:(让我有时间去研究它,非常感谢!:) – 2011-03-10 12:16:14