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的行不存在.
那么有一种方法可以通过表中的索引检索行吗?
更好的方法是从ListViewitem 表示的对象中获取记录的id,然后使用它来获取数据库中的正确记录.在你ListView的OnItemClickListener,该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.