getLastVisiblePosition返回-1

And*_*rew 14 android listview cursor

我遇到了问题ListView(使用CursorAdapter).当我打电话给getListView().getLastVisiblePosition()我的时候-1.这是一个问题,因为我的列表中填充了项目.此外,getListView().getFirstVisiblePosition()无论我在列表中滚动的位置,始终返回0.有任何想法吗?

它与startManagingCursor有关

    @Override
    public void changeCursor(Cursor cursor) {
        super.changeCursor(cursor);
        MyActivity.this.mCursor = cursor;
        //startManagingCursor(MyActivity.this.mCursor);
    }
Run Code Online (Sandbox Code Playgroud)

如果我注释掉startManagingCursor,一切正常.我也尝试stopManagingCursor()在更改之前添加Cursor并仍然有相同的问题.

小智 33

这是因为在调用getListView().getLastVisiblePosition()时,不会呈现listview.您可以将调用添加到视图的消息队列中,如下所示:

listview.post(new Runnable() {
    public void run() {
        listview.getLastVisiblePosition();
    }
});
Run Code Online (Sandbox Code Playgroud)


Fal*_*rri 0

我的猜测是您的getItem(int position)getItemId(int position)方法在您的适配器中没有正确定义。