[英]Android Room Persistence Library TypeConverter unknown issue
[英]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 在内部存储器中保存和读取列表。 问题是我不确定:
如果我能够加载我的 ArrayList 并像现在一样使用它,即使它需要 @TypeConverter?
我可以像下面这样写我的@Entity 类吗?
@Entity 公共类事件 {
@NonNull @PrimaryKey public ArrayList mNewEventsRPL;
公共 ArrayList getEvents() { 返回 mNewEventsRPL; }
public void setEvents(ArrayList evenciki) { this.mNewEventsRPL=evenciki; }}
我已经使用 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.