繁体   English   中英

Android 将包含对象的 ArrayList 保存到 Room Persistence Library - 需要帮助

[英]Android saving ArrayList containg objects to Room Persistence Library - help needed

在我的应用程序中,我创建了一个 ArrayList,它保存我的日历事件对象 (WeekViewEvents),其中包含不同的字段(主要是字符串和整数):

ArrayList<WeekViewEvent> mNewEvents = new ArrayList<>;
...
WeekViewEvent event = new WeekViewEvent();
event.setName("abc");
event.setId(123);
mNewEvents.add(event);

日历库直接使用该数组(以其形式)现在,我想使用 Room Persistence Library 在内部存储器中保存和读取列表。 问题是我不确定:

  1. 如果我能够加载我的 ArrayList 并像现在一样使用它,即使它需要 @TypeConverter?

  2. 我可以像下面这样写我的@Entity 类吗?

    @Entity 公共类事件 {

    @NonNull @PrimaryKey public ArrayList mNewEventsRPL;

    公共 ArrayList getEvents() { 返回 mNewEventsRPL; }

    public void setEvents(ArrayList evenciki) { this.mNewEventsRPL=evenciki; }}

  3. 我已经使用 GSON 将单个事件对象转换为 String ,它看起来像这样:

    {"mAllDay":false,"mColor":-6454059,"mEndTime":{"year":2018,"month":0,"dayOfMonth":30,"hourOfDay":16,"minute":46," second":35},"mId":"111222333","mLocation":"klient","mName":"usluga","mStartTime":{"year":2018,"month":0,"dayOfMonth" :30,"hourOfDay":15,"minute":46,"second":35}}

所以现在的问题是:我应该如何编写我的@TypeConverter 以便它可以保存和加载我的 ArrayList?

下面可以帮助您找到对象列表的转换器。

代替“ YourClassName ”,添加您的对象类。

@TypeConverter
    public String fromValuesToList(ArrayList<**YourClassName**> parentalRating) {
        if (parentalRating == null) {
            return (null);
        }
        Gson gson = new Gson();
        Type type = new TypeToken<ArrayList<**YourClassName**>>() {}.getType();
        return gson.toJson(parentalRating, type);
    }

    @TypeConverter
    public ArrayList<**YourClassName**> toOptionValuesList(String parentalRatingString) {
        if (parentalRatingString == null) {
            return (null);
        }
        Gson gson = new Gson();
        Type type = new TypeToken<List<**YourClassName**>>() {
        }.getType();
        return gson.fromJson(parentalRatingString, type);
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM