6

行の最初の位置の前にカーソルが開始される理由と、最後の位置の後にカーソルが終了する理由を理解しようとしています。この方法でそれを行うことには、継承の利点がありますか?

例えば:

public abstract int getPosition () 

以来:APIレベル1行セット内のカーソルの現在の位置を返します。値はゼロベースです。行セットが最初に返されるとき、カーソルは最初の行の前の位置-1にあります。最後の行が返された後、next()をもう一度呼び出すと、カーソルが最後のエントリの先、count()の位置に残ります。

現在のカーソル位置を返します。

ありがとうございました。

4

3 に答える 3

9

なぜなら、aにCursorは行が入力されることが保証されていないからです。0行のデータベースから戻ってきた場合Cursor、位置0に行がないため、初期位置が0であっても意味がありません。

于 2012-07-13T22:48:18.727 に答える
6

だからあなたはこれを行うことができます:

Cursor c = db.rawQuery(...);
while (c.moveToNext()) {
    // deal with one row at a time
}

これは、カーソルの結果を反復処理するための最も簡単な方法であり(Androidカーソルを反復処理するための最良の方法は何ですか?を参照)、最初の行のに開始されなかった場合は機能しません。

于 2012-07-13T22:40:49.427 に答える
0

AndroidSQLiteCursorは、ネイティブSQLiteデータベースカーソルのラッパーオブジェクトです。これは、データベース内のレコードをトラバースできるようにする制御構造です。
呼び出す前に、setPositionまたはmoveToFirstネイティブカーソルでさえ、スペースを節約するためにクエリ結果をメモリにロードしないと思います。

于 2012-07-13T22:49:15.590 に答える