假设我有一个包含 145 个项目的适配器。目前在我的 Listview 中显示了 10 个视图,其中视图代表项目 104 到 113。现在我有一个 scrollListener,其 onScroll 方法是
@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);
}