15

私はListViewCursorAdapterを使用して)私に問題があります。電話すると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が、まだ同じ問題があります。

4

3 に答える 3

33

これは、 getListView().getLastVisiblePosition() を呼び出した瞬間にリストビューがレンダリングされないためです。次のように、ビューのメッセージ キューに呼び出しを追加できます。

listview.post(new Runnable() {
    public void run() {
        listview.getLastVisiblePosition();
    }
});
于 2011-07-28T03:15:06.647 に答える
1

私も同じ問題に直面しました。問題は、 getLastVisiblePosition() は、リストビューの最初の要素にいる場合にのみ機能し、残りの場合は null が返されることです。だから私がしたことは、私が以下に言及した正確なビュー位置を見つけるために小さな計算をしたことです.

int  LastPos=(mylist.getLastVisiblePosition()-mylist.getFirstVisiblePosition());

これは間違いなく正確な最後の位置を返します。

于 2012-04-10T07:09:30.150 に答える
0

私の推測では、あなたのgetItem(int position)andgetItemId(int position)メソッドがアダプターで正しく定義されていません。

于 2010-10-27T19:04:55.347 に答える