1.ListView的getCount()方法和getChildCount()方法的區(qū)別弹囚,
getCount()實際上是 AdapterView.getCount()返回的是其 Adapter.getCount() 返回的值斩松。是item的實際數(shù)量惠勒。
而getChildCount()返回的是listview中可見item的數(shù)量双藕。故getChildCount()<=getCount()
2.getChildAt(position)
方法中position指的是當(dāng)前可見區(qū)域的第幾個元素矫俺。比如要獲得GridView的第position個View币励,那么實際的index就是position減去第一個可見View的位置View view = getChildAt ( position - getFirstVisiblePosition() ) ;
3.要讓ListView回到原先選中的位置
需要用到setSelectionFromTop(position, y)方法慷蠕,第一個參數(shù)是需要定位到的position,第二個參數(shù)是偏移距離食呻,其實setSelection調(diào)用的也是setSelectionFromTop方法流炕,只不過偏移量y是0.
//如果是TV開發(fā)中的話直接重寫listview的onFocusChanged方法就好了,如下
@Override
protected void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect) {
int lastSeclection = getSelectedItemPosition();
super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
if (gainFocus) {
setSelection(lastSeclection);
}
}