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

标签 android android-listview android-sqlite

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

例如,我有 3 行 ID:

Record1
Record2
Record3

现在如果我使用它的 id 删除第二行,剩下的行将是这样的:

Record1
Record3

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

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

最佳答案

更好的方法是从 ListView 项表示的对象中获取记录的 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
}

但是,如果你真的想得到第nth条记录,相信你可以这样做:

SELECT * FROM TableName LIMIT 1 OFFSET n;

其中 n 是您要查找的索引。这还假定您的结果的排序方式与它们在 ListView 中的排序方式相同。

关于android - 如何通过索引获取 SQLite 中的一行(而不是通过 id),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14782559/

相关文章:

android - Twitter 标签是动态的

android - 如何将 Room Persistence Library 与预填充的数据库一起使用?

java - 为什么 CountdownTimer 只调用 onTick 一次?

android - 仅针对高密度和大屏幕智能手机发布 Android 应用程序

android - 弹出窗口内的 ListView 高度没有改变

android - 如何用jsoup解析图片

java - 关于在 android studio 中自定义 listview 的困惑

android - 访问外部 SQLite 数据库时出错

android - 如何使用 Eclipse + Proguard "run"导出的 Android 应用程序?

Android Kotlin Retrofit Post 请求输入的数据未发送