【问题标题】:How to categorize Room's data?如何对 Room 的数据进行分类?
【发布时间】:2020-05-13 07:40:49
【问题描述】:

我正在为一家餐厅编写一个简单的应用程序(只是为了练习)。食物分为三个类别(比如快餐、沙拉和三明治)。我想根据用户在 MainActivity 中选择的类别在三个不同的 RecyclerView 中显示这些食物。 我这样做的策略(我认为这不好)是:

1.我有一个枚举类,每个类别有三个项目。

枚举类类型{ 快餐, 沙拉, 三明治 }

  1. 每个食物的构造函数中都有一个参数:

类食物(...,类型:类型)

  1. 根据其类型从 Room db 获取特殊类别

@Query (SELECT * FROM foods WHERE type=:type)
fun getFastFoods(type:Types): 列表

有没有更好的方法来对 Room 中的项目进行分类? getFastFood 方法对于从 Room 获取数据是否有效?

【问题讨论】:

    标签: android kotlin android-recyclerview android-room


    【解决方案1】:

    只需使用转换器,例如

    @TypeConverters(Converters::class)
    abstract class Database : RoomDatabase()
    
    object Converters {
    
        @JvmStatic
        @TypeConverter
        fun fromTypes(value: Types): String {
            return value.toString()
        }
    
        @JvmStatic
        @TypeConverter
        fun toTypes(value: String): Types {
            return Types.valueOf(value)
        }
    }
    

    现在在 db 中 Types 字段存储为字符串,它是枚举中的 name 属性

    【讨论】:

    • 谢谢,但这不是我的问题。我想知道有没有更好的方法来对一系列项目进行分类?
    猜你喜欢
    • 2020-12-31
    • 2021-04-13
    • 2016-11-30
    • 2012-05-16
    • 1970-01-01
    • 2021-06-02
    • 2019-08-29
    • 2016-04-04
    • 2015-05-26
    相关资源
    最近更新 更多