当前位置: 首页 > 知识库问答 >
问题:

Android保存将对象连接到Room持久性库的ArrayList-需要帮助

萧嘉禧
2023-03-14

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

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

>

  • 我是否能够加载我的ArrayList并使用它,即使它需要@TypeConverter?

    我能像下面这样写我的@Entity类吗:?

    @Entity公共类事件{

    public void setEvents(ArrayList evenciki){This.MnewEventSrpl=evenciki;}}

    我已经使用GSON将单个事件对象转换为字符串,看起来如下所示:

    {“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?

  • 共有1个答案

    匡晟
    2023-03-14

    下面帮助您查找对象列表的转换器。

    添加对象类代替“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);
        }
    
     类似资料:
    • 下面是Kotlin中的类: 但当我试图运行应用程序时,它立即崩溃。以下是崩溃日志: 类似乎不是自动生成的。我检查了从codelab下载的原始java应用程序,发现是自动生成的。

    • 我试图通过新的android room库更新我的数据库,但它不起作用。这就是我的方法 主要活动。JAVA CarViewModel。JAVA 卡ao.java 我做了调试,新数据出现并调用viewModel。updateItems(list)方法。提前谢谢!

    • 问题内容: 我创建了一个这样的对象: 我想保存该对象。我怎样才能做到这一点? 问题答案: 你可以使用标准库中的模块。这是你的示例的基本应用: 你还可以定义自己的简单实用程序,如下所示,该实用程序打开文件并向其中写入单个对象: 更新资料 由于这是一个非常受欢迎的答案,因此,我想谈谈一些高级用法主题。 实际使用该cPickle模块几乎总是可取的,而不是因为该模块是用C编写的并且速度更快。它们之间有一些

    • 问题内容: 我的Node Web应用程序需要一个持久的MySQL连接。问题是每天大约发生几次这种情况: 这是我的连接代码: 如您所见,handleDisconnect代码不起作用。 问题答案: 使用mysql连接池。当连接断开时它将重新连接,您将获得额外的好处,即能够同时进行多个sql查询。如果您不使用数据库池,则您的应用将在等待当前运行的数据库请求完成时阻止数据库请求。 我通常定义一个数据库模块

    • 在android中,我很难将对象的ArrayList保存到文件中。我希望能够读取这些对象,并对每个对象调用一个方法来获取它们的一个属性。这是对象类 } 在我的活动中,我接受输入并创建一个新的事务对象。然后将事务对象添加到ArrayList中。我想将ArrayList保存到一个文件中,并能够从其他活动访问ArrayList。在这个不同的活动中,我想访问并调用ArrayList中每个对象的,以创建一个

    • 问题内容: 我遇到了使用EntityManager将元素持久保存到数据库的问题。根据我发现的答案,我在DaoJpa中尝试了这4种方法来执行此操作,但仍然失败。在这里,我附上了我尝试过的四种方法: 控制器部分中的代码: 1.道霸: 不起作用! 2。 我得到的例外:没有交易在进行中 3。 我得到的异常:不允许在共享的EntityManager上创建事务-使用Spring事务或EJB CMT代替 4。