在android的开发中,经常会遇到需要主动去设定某条ListItem的位置的需求。设置位置的函数有
- ListView.setSelection(int position)
- ListView.setSelectionFromTop(int position, int y);
其中position指的是指定的item的在ListView中的索引,注意如果有Header存在的情况下,索引是从Header就开始算的。y指的是到ListView可见范围内最上边边缘的距离。
那么取得position的函数是
- ListView.getFirstVisiblePosition()
但是这里还只能取到position的值,还差一个y的值。
这里就需要获得ListView的第一个元素对象,然后获得该试图对象可见范围内最上边边缘的距离,代码如下:
- View v = mList.getChildAt(0); //假设你的代码中ListView对象的变量名是mList
- int top = (v == null) ? 0 : v.getTop();
- int position = ListView.getFirstVisiblePosition()
- mList.setSelectionFromTop(position, top);