說我有一個145項適配器。和目前在我的列表視圖我有10次展示,其中的觀點代表項目104至113。現在我有一個scrollListener其onScroll方法瞭解ListView childAt方法
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
{
View view = getViewForPosition(??, view);//keep reading for ?? details
}
如果我需要爲我firstVisibleItem,其中適配器是視圖項目104,我如何從列表中請求它?我是說listview.getChildAt(0)
?或者我說listview.getChildAt(104)
?
現在我正在使用下面的方法,但基本問題的立場。
public View getViewForPosition(int position, AbsListView listview) {
int firstPosition = listview.getFirstVisiblePosition()
- ((ListView) listview).getHeaderViewsCount();
int wantedChild = position - firstPosition;
// Say, first visible position is 8, you want position 10, wantedChild will now be 2
// So that means your view is child #2 in the ViewGroup:
if (wantedChild < 0 || wantedChild >= listview.getChildCount()) {
return null;
}
return listview.getChildAt(wantedChild);
}
我認爲一個更好的問題是,爲什麼你需要onScroll方法的視圖?並不是說沒有理由,但通常你想做的任何事情都可以做到View,你可以(也應該)在'getView()'方法中做。 – kcoppock
@kcoppock我很高興你問:http://stackoverflow.com/questions/19041222/finding-pixel-location-of-listview-item-seems-to-return-wrong-value –