我正在修改我的Android应用程序以使用ORMLite,它目前使用了许多CursorAdapter,我非常希望尽量减少编码.
我不是100%肯定但是看起来当ORMLite在db中创建一个id字段时,它总是使用id,而CursorAdapter需要_id.
可以使用如下查询来解决此问题:
select id as _id ......
Run Code Online (Sandbox Code Playgroud)
但该Dao.queryRaw()方法返回一个列表,而不是Cursor,所以我这样做的方法是打开另一个SQLiteOpenHelper数据库连接并使用rawQuery().
这有效,但有没有更好的方法呢?拥有两个独立的数据库连接似乎有点过头了,以后可能会存在麻烦.
我在我的Android应用程序中成功使用OrmLite.我正在将我的应用程序移动到新的CursorLoader逻辑,我想知道如何使用带有CursorLoader的Ormlite而不使用ContentProvider.
不可能吗?
我在我的应用程序中使用数据库帮助程序运行OrmLite,依此类推.我查看了OrmLite的示例和一些教程.这是我使用listViews的代码:
数据库经理:
public List<Artist> getAllArtists() {
List<Artist> artists = null;
try {
artists = getHelper().getArtistDao().queryForAll();
} catch (SQLException e) {
e.printStackTrace();
}
return artists;
}
Run Code Online (Sandbox Code Playgroud)
活动:
List<Artist> artists = dataBase.getAllArtists();
for (Artist artist : artists) {
items.add(artist);
}
mAdapter = new ArtistsListCustomAdapter(getActivity(), items);
listView.setAdapter(mAdapter);
Run Code Online (Sandbox Code Playgroud)
这是一个好的方法还是使用我的方法会遇到麻烦?
从其他来源我已经读过应该CursorAdapter用于listViews而不是BaseAdapter(我现在正在扩展ArtistsListCustomAdapter()).对我来说,第二次迭代结果来创建数组似乎很尴尬.
我已经找到了一些关于使用适配器的线索,但由于我对Android很新,所以我真的很感激"连接点"的更多线索.在我的情况下,应该getAllArtists()返回一个Cursor?这么简单的任务似乎很复杂:
我想将SimpleCursorAdapter与Spinner一起使用.
我找到了如何返回Cursor.
QueryBuilder<ChoixPointVerification, Integer> qb = choixPointVerificationDao.queryBuilder();
qb.where().eq(FIELD, id);
PreparedQuery<ChoixPointVerification> preparedQuery = qb.prepare();
AndroidCompiledStatement compiledStatement =
(AndroidCompiledStatement)preparedQuery.compile(db, StatementType.SELECT);
Cursor cursor = compiledStatement.getCursor();
return cursor;
Run Code Online (Sandbox Code Playgroud)
但是Spinner需要一个_id字段,而我只有一个带有id字段的对象.我宁愿避免重命名这个领域.
我该如何解决这个案子?我真的需要将id与所有微调器字段相关联.
我想我可以从rawsql发出一个游标但是我找不到如何使用ormlite.如果我可以使用原始sql创建PreparedQuery似乎是可能的.
我还读到,如果我有一个AndroidDatabase对象,我可以发出一个Cursor对象,但是我们如何用ormlite创建一个AndroidDatabase呢?
我真的很开心所有的解决方案
问候