如何通过索引(而不是id)在SQLite中获取一行

ped*_*dja 2 android android-listview android-sqlite

有没有办法通过表中的索引/位置获取行,而不是通过其id?

例如,我有3行ID:

Record1
Record2
Record3
Run Code Online (Sandbox Code Playgroud)

现在,如果我使用其id删除第二行,其余行将如下所示:

Record1
Record3
Run Code Online (Sandbox Code Playgroud)

因为我使用ListViewposition来确定要删除的数据库中的哪一行,所以下次我尝试删除第二行时,我会得到异常,因为id为2的行不存在.

那么有一种方法可以通过表中的索引检索行吗?

Blu*_*mer 6

更好的方法是从ListViewitem 表示的对象中获取记录的id,然后使用它来获取数据库中的正确记录.在你ListViewOnItemClickListener,该onItemClick事件发生在AdapterView作为第一个参数,作为第二个选择项的索引.从适配器获取该项目并将其转换为它所代表的类型.

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    YourClass c = (YourClass)arg0.getItemAtPosition(arg2);
    //index of the record to delete can now be accessed at c.id
}
Run Code Online (Sandbox Code Playgroud)

但是,如果你真的想获得第n条记录,我相信你可以做到以下几点:

SELECT * FROM TableName LIMIT 1 OFFSET n;
Run Code Online (Sandbox Code Playgroud)

其中n是你所追求的指数.这也假设您的结果的排序方式与您的结果相同ListView.