如何从房间访问中获取光标对象列表?

时间:2017-07-26 12:05:02

标签: android android-sqlite android-room

我正在尝试使用我的代码来使用房间数据库API。对于文档表,我已经定义了实体类Document,当我查询getAll()时,它会返回所有文档。

现在我有一个旧的Adapter实现,它使Cursor的用户(它的CursorAdapter)。在我的DocumentDao类中,我定义了一个获取游标对象列表的方法。我的Dao课程如下:

@Dao
public interface DocumentDao {

    @Query("SELECT * FROM documents")
    List<com.myapp.room.entity.Document> getAll();

    @Query("SELECT * FROM documents")
    List<Cursor> getCursorAll();
}

在编译期间,我收到以下错误:

Error:(20, 18) error: Not sure how to convert a Cursor to this method's return type

Room的官方指南,其中指出:

  

如果你的应用程序的逻辑需要直接访问返回行,你可以   从查询中返回一个Cursor对象,如下所示   代码段:

@Dao
public interface MyDao {
    @Query("SELECT * FROM user WHERE age > :minAge LIMIT 5")
    public Cursor loadRawUsersOlderThan(int minAge);
}

我的问题是我是否需要为此目的编写转换器?

1 个答案:

答案 0 :(得分:8)

您正在返回List<Cursor>而不是Cursor。变化:

@Query("SELECT * FROM documents")
List<Cursor> getCursorAll();

@Query("SELECT * FROM documents")
Cursor getCursorAll();