kaibingwang 2020-10-19 17:17 采纳率: 0%
浏览 326

Room Dao LiveData作为返回类型报错Not sure how to convert a Cursor to this method's return type

图片说明

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-25 02:23
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在Android中,Cursor是SQLite数据库中的一个对象,它包含一些行的元数据。当我们在使用Cursor时,我们需要将其转换为一种可以被Java序列化和处理的数据结构(例如ArrayListLiveData)。

    为了将Cursor转换为LiveData<List<ApplicationInfoTest>>,你可以使用以下步骤:

    1. Cursor转换为List<ApplicationInfoTest>,这可以通过遍历Cursor并创建一个新的ApplicationInfoTest实例来实现。
    2. 使用LiveDataList<ApplicationInfoTest>转换回LiveData<List<ApplicationInfoTest>>

    以下是具体的代码示例:

    class ApplicationInfoTest(val id: Int, val name: String, val version: String)
    
    val cursor: Cursor = // 获取你的Cursor
    
    var list: List<ApplicationInfoTest> = ArrayList()
    
    while(cursor.moveToNext()) {
        val id = cursor.getInt(0)
        val name = cursor.getString(1)
        val version = cursor.getString(2)
        list.add(ApplicationInfoTest(id, name, version))
    }
    
    val liveData = MutableLiveData(list)
    
    liveData.value = list
    

    请注意,你需要根据实际的SQL查询和数据库表结构调整上述代码。

    评论

报告相同问题?