1.ListView的getCount()方法和getChildCount()方法的区别,
getCount()实际上是 AdapterView.getCount()返回的是其 Adapter.getCount() 返回的值。是item的实际数量。
而getChildCount()返回的是listview中可见item的数量。故getChildCount()<=getCount()
2.getChildAt(position)
方法中position指的是当前可见区域的第几个元素。比如要获得GridView的第position个View,那么实际的index就是position减去第一个可见View的位置View view = getChildAt ( position - getFirstVisiblePosition() ) ;
3.要让ListView回到原先选中的位置
需要用到setSelectionFromTop(position, y)方法,第一个参数是需要定位到的position,第二个参数是偏移距离,其实setSelection调用的也是setSelectionFromTop方法,只不过偏移量y是0.
//如果是TV开发中的话直接重写listview的onFocusChanged方法就好了,如下
@Override
protected void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect) {
int lastSeclection = getSelectedItemPosition();
super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
if (gainFocus) {
setSelection(lastSeclection);
}
}