关于ListView

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);
        }
    }

你可能感兴趣的:(关于ListView)