在设置适配器之后的ListView.getLastVisiblePosition()

时间:2014-04-13 17:08:36

标签: android android-listview

这是我的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()方法。

1 个答案:

答案 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());
    }
});