Android 双人房型转换器

Android Room TypeConverter for Double

我正在尝试为 Android Room Persistance Library 使用自定义 TypeConverter,如 documentation 所示。主要思想是格式化 Android Room Dao 正在执行的所有 Sqlite SUM select。

我的代码:

 @TypeConverter
public static double toDouble(String str) {
    return FormatHelper.formatAmount(Double.parseDouble(str));
}

@TypeConverter
public static String fromDouble(double doub) {
    return String.valueOf(FormatHelper.formatAmount(doub));
}

我已经尝试清除数据并重建应用程序。 同一 class 中的日期转换器正在运行。 Android TypeConverters 不支持 Primitive 变量吗?

编辑:

我在 RoomDatabase 中注册了 TypeConverter class 所以它在整个数据库中使用。

更具体地说我的问题:如果我在 Dao 中有这样的查询 class:

@Query("SELECT SUM(quantity) FROM production_plan_item")
Double getActivePlanItemsCount();

它有时可能 return 值像 2.30000000000001。

我认为类型转换器用于处理 returned 查询值。每次我将 double 保存到数据库或从中保存 select double 之前,我的 TypeConverter 都会为我舍入 double 并且我不必每次 select 时都舍入它。

否则我必须手动将每个 selected 双舍入。

I thought that Type converters are used to process returned value of queries

您的 @TypeConverter 方法在 doubleString 之间转换。 SUM不会return一个String。您的 @Query 方法是 returning Double。因此,这些 @TypeConverter 方法都不相关,因为没有发生 String<->double 转换。

Otherwise I have to round every single selected double manually.

也许您应该在数据库架构中使用更少的 REAL 列。