我的ListView
(使用CursorAdapte
r)出了问题。当我致电getListView().getLastVisiblePosition()
时,我收到了-1
。这是一个问题,因为我的列表中填充了项目。此外,getListView().getFirstVisiblePosition()
始终返回0,无论我在列表中滚动的位置。有什么想法吗?
它与startManagingCursor
有关 @Override
public void changeCursor(Cursor cursor) {
super.changeCursor(cursor);
MyActivity.this.mCursor = cursor;
//startManagingCursor(MyActivity.this.mCursor);
}
如果我注释掉startManagingCursor,一切正常。我还尝试在更改stopManagingCursor()
之前添加Cursor
,但问题仍然存在。
答案 0 :(得分:33)
这是因为你调用getListView()。getLastVisiblePosition()的那一刻不会呈现listview。您可以将调用添加到视图的消息队列中,如下所示:
listview.post(new Runnable() {
public void run() {
listview.getLastVisiblePosition();
}
});
答案 1 :(得分:1)
即使我遇到同样的问题。问题是,只有当你在listview的第一个元素中时,getLastVisiblePosition()才有效,其余的你将返回null。所以我做的是,我做了一个小计算,找出我在下面提到的确切视图位置,
int LastPos=(mylist.getLastVisiblePosition()-mylist.getFirstVisiblePosition());
这毫无疑问地返回确切的最后位置。
答案 2 :(得分:0)
我的猜测是,您的getItem(int position)
和getItemId(int position)
方法未在您的适配器中正确定义。