145 アイテムのアダプターがあるとします。現在、Listview には 10 個のビューが表示されており、ビューはアイテム 104 から 113 を表しています。
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
{
View view = getViewForPosition(??, view);//keep reading for ?? details
}
アダプターにとってアイテム 104 である firstVisibleItem のビューが必要な場合、リストからどのように要求すればよいですか? 私は言い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);
}