0

私は2つのボタンを持っています。1 つは前の sqlite データベース レコード用で、もう 1 つは次の sqlite データベース レコード用です。

データベースから次のレコードを取得しようとしている方法を次に示します。

public long getNext(int id,DataBaseHelper helper){

    Story story = new Story();

    Cursor cursor = story.getStories(helper, 0);

            //Updated code      

    cursor.moveToPosition(id);

    cursor.moveToNext();

    return cursor.getLong(1);

            //Updated code

}

問題は、渡した前の位置が「1」の場合、次に取得する位置が「3」であることです。1 つのレコードをスキップするのはなぜですか? 毎回 1 つのレコードをスキップし続けます。私はこれが初めてで、どこでも見ましたが、この特定の問題が私に起こっているようです。

UPDATE:より良いアプローチを示すために編集されたコード(おそらく)

4

2 に答える 2

0

0 から数え始めることを思い出してください。つまりCursor.getPosition()、最初のレコードはインデックス #0 にあり、2 番目のレコードはインデックス #1 にあります。

公式ドキュメントを見てみましょう: Cursor.moveToPosition(int position)

あなたのコードを見てみましょう:

(例ではid = 1 )

cursor.moveToPosition(id); 

// Cursor is now on the record #1, so the second one of the list

cursor.moveToNext();  

// Cursor is now on the record id+1 = #2, so the third one of the list

return cursor.getLong(1);

// Returns the value of the colon #1 of the third record 
// of the list : so the record at the index #2
于 2013-06-27T08:06:23.933 に答える