这是我的AsyncTask的完整onPostExecute。
protected void onPostExecute(MergeAdapter mAdapter) {
lv.setAdapter(mAdapter);
isLoading = false;
if (isActiveFragment())
sProgressBar.setVisibility(View.GONE);
mPullToRefreshLayout.setRefreshComplete();
System.out.println( lv.getFirstVisiblePosition() );
System.out.println( lv.getLastVisiblePosition() );
populateMarkers(lv.getFirstVisiblePosition(), lv.getLastVisiblePosition());
}
lv是listview。所以我所做的只是设置适配器,并在我询问第一个和最后一个可见位置后的片刻。
println-s输出:0和-1。看起来尚未测量物体。是否可以在设置适配器后获取第一个和最后一个位置?
我想运行带有第一个和最后一个可见对象的int的参数的populateMarkers()
方法。
答案 0 :(得分:0)
这是因为您调用getListView().getLastVisiblePosition()
时没有呈现列表视图。您可以将调用添加到视图的消息队列中,如下所示:
list.post(new Runnable() {
@Override
public void run() {
System.out.println( lv.getFirstVisiblePosition() );
System.out.println( lv.getLastVisiblePosition() );
populateMarkers(lv.getFirstVisiblePosition(), lv.getLastVisiblePosition());
}
});