Android:如何创建自己的光标类?
|
我在Android中使用Sqlite,并且要从数据库中获取值,请使用以下方法:
Cursor cursor = sqliteDatabase.rawQuery(\"select title,category from table\", null);
int columnIndexTitle = cursor.getColumnIndex(\"title\");
iny columnIndexCategory = cursor.getColumnIndex(\"category\");
cursor.moveToFirst();
while (cursor.moveToNext()) {
String title = cursor.getString(columnIndexTitle);
String category = cursor.getString(columnIndexCategory);
}
cursor.close();
我想创建自己的Cursor,以便可以用一种方法来做getColumnIndex()
和getString()
。像这样:
String title = cursor.getString(\"title\");
我想创建自己的类来扩展从sqliteDatabase.rawQuery
获得的游标,但是我不确定如何实现此目的。我应该扩展SQLiteCursor还是应该怎么做?可能吗,这是个好主意吗?
没有找到相关结果
已邀请:
5 个回复
闯舱酮
夏瓤跋棘
与
一起使用的最佳方法。在我的情况下,我需要向Cursor提供一个额外的属性,以携带更多的信息,所以我的用例与问题的内容并不完全相同。发表我的发现,希望对您有所帮助。 对我来说,最棘手的部分是SQLiteDatabase查询方法返回一个Cursor,我需要将自定义子类传递给Cursor。 我在Android API中找到了解决方案:使用CursorWrapper类。似乎正是为此目的而设计的。 班级:
用法:
蜂佬渺
要么
就个人而言,我愿意做后者,除非您讨厌一直不愿提供这种额外的论点。 编辑:我忘了提pydave的要点:如果您在循环中调用它,您将为明显的性能影响做好准备。首选方法是一次查找索引,将其缓存,然后使用该索引。
补蹲农界维
bot,还有适用于
的方法
在数据库上运行查询并在第一行的第一列中返回值的实用程序方法。 就像是
貉骂
这就是它如何工作的总体思路。 现在要解决问题了。为了防止性能下降,请创建一个散列来保存列索引。这将用作缓存。调用getString时,请检查列索引的哈希值。如果它不存在,则使用getColumnIndex获取它并缓存它。 抱歉,我目前无法添加任何代码,但是我在移动设备上,因此以后会尝试添加一些代码。