在android的开发中,经常会遇到需要主动去设定某条ListItem的位置的需求。设置位置的函数有

 
  
  1. ListView.setSelection(int position) 
  2. ListView.setSelectionFromTop(int position, int y); 

 

其中position指的是指定的item的在ListView中的索引,注意如果有Header存在的情况下,索引是从Header就开始算的。y指的是到ListView可见范围内最上边边缘的距离。

那么取得position的函数是

 
  
  1. ListView.getFirstVisiblePosition() 

 

但是这里还只能取到position的值,还差一个y的值。

这里就需要获得ListView的第一个元素对象,然后获得该试图对象可见范围内最上边边缘的距离,代码如下:

 
  
  1. View v = mList.getChildAt(0);  //假设你的代码中ListView对象的变量名是mList
  2. int top = (v == null) ? 0 : v.getTop(); 
  3. int position = ListView.getFirstVisiblePosition()
  4. mList.setSelectionFromTop(position, top);
  5.