【问题标题】:How to save ArrayList<Float> in Room Database as column如何将房间数据库中的 ArrayList<Float> 保存为列
【发布时间】:2019-01-18 09:39:44
【问题描述】:

我需要编写类型转换器来将 ArrayList 保存为列。我试过写转换器,但没有结果,我得到这个错误:

“错误:不确定如何将 Cursor 转换为此方法的返回类型”

@Entity(tableName = "WeightRecords")
class WeightRecords : Serializable {

  @PrimaryKey(autoGenerate = true)
  var id: Long = 0

  @ColumnInfo(name = "weightRecords")
  var weightRecords: Double = 0.0

  @ColumnInfo(name = "days")
  var days: String = ""

  @ColumnInfo(name = "data")
  var data: ArrayList<Float>? = ArrayList()
}

@Dao
abstract class WeightRecordDao : BaseDao<WeightRecords>() {

  @Insert(onConflict = OnConflictStrategy.REPLACE)
  abstract fun insertWeightRecords(weightRecords: WeightRecords): Long


  @Query("SELECT data FROM WeightRecords")
  abstract fun getData(): ArrayList<Float>

}

我需要写类型转换器,请帮忙!!

【问题讨论】:

    标签: arraylist kotlin typeconverter


    【解决方案1】:

    嗯,回答你的问题,我认为应该是这样的

    @TypeConverter
    fun fromArrayListOfFloats(list: ArrayList<Float>?): String {
        return list?.joinToString(separator = ";") { it.toString() } ?: ""
    }
    
    @TypeConverter
    fun toArrayListOfFloats(string: String?): ArrayList<Float> {
        return ArrayList(string?.split(";")?.mapNotNull { it.toFloatOrNull() } ?: emptyList())
    }
    

    但也许存储floats 的列表对您来说不是最好的方法?也许您应该创建单独的记录表,其中每个 float 将作为单独的行?

    另外,我猜,如果你在每一行都有一个ArrayList&lt;Float&gt;,你的getData 方法应该返回一个List&lt;ArrayList&lt;Float&gt;&gt;...

    【讨论】:

      猜你喜欢
      • 2021-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-21
      • 2021-10-22
      • 1970-01-01
      • 2021-10-31
      相关资源
      最近更新 更多