0

我有两个按钮。一个用于上一个,一个用于下一个 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”。为什么会跳过一条记录?它每次都跳过一条记录。请告诉我我是否做错了什么,因为我是新手,我到处都看过,但这个具体问题似乎正在发生在我身上。

更新:编辑代码以显示更好的方法(也许)

4

2 回答 2

0

好的。我对这里的方法有点错误。我忽略了游标索引从-1开始而我的表的数据库索引从1开始的事实。所以我不得不从id变量中减去-1,它解决了问题:)这是对我有用的代码.

public long getNext(int id,DataBaseHelper helper){

            id = id - 1;        

    Story story = new Story();

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

            //Updated code      

    cursor.moveToPosition(id);

    cursor.moveToNext();

    return cursor.getLong(1);

            //Updated code

}
于 2013-06-27T10:02:05.310 回答
0

请记住,Cursor.getPosition()从 0 开始计数。因此,第一条记录位于索引 #0,第二条记录位于索引 #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 回答