如何将java列表存储在领域android数据库中
Posted
技术标签:
【中文标题】如何将java列表存储在领域android数据库中【英文标题】:how to store java list in realm android database 【发布时间】:2017-05-02 12:41:20 【问题描述】:我们如何将 java 列表存储在领域 android 数据库中。我尝试使用模型中存在的 setter 方法来存储它,但它不起作用,并且我在异常消息中收到“'value' 的每个元素都必须是有效的托管对象”。
public void storeNewsList(String categoryId, List<News> newsList)
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
NewsList newsListObj = realm.createObject(NewsList.class);
newsListObj.setNewsList(new RealmList<>(newsList.toArray(new News[newsList.size()])));
newsListObj.setCategoryId(categoryId);
realm.commitTransaction();
realm.close();
【问题讨论】:
分享你的代码你做了什么? public void storeNewsList(String categoryId, List将代码替换为
public void storeNewsList(String categoryId, List<News> newsList)
try(Realm realm = Realm.getDefaultInstance())
realm.executeTransaction(new Realm.Transaction()
@Override
public void execute(Realm realm)
NewsList newsListObj = new NewsList(); // <-- create unmanaged
RealmList<News> _newsList = new RealmList<>();
_newsList.addAll(newsList);
newsListObj.setNewsList(_newsList);
newsListObj.setCategoryId(categoryId);
realm.insert(newsListObj); // <-- insert unmanaged to Realm
);
【讨论】:
newsListObj.setNewsList(new RealmList(newsList));出现错误无法解析构造函数。 啊,那么addAll()
就是
它只对我有用,而不是 RealmList如果你使用@PrimaryKey,那么insertOrUpdate
就可以了
try(Realm realm = Realm.getDefaultInstance())
realm.executeTransaction(new Realm.Transaction()
@Override
public void execute(Realm realm)
RealmList<News> _newsList = new RealmList<>();
_newsList.addAll(myCustomArrayList);
realm.insertOrUpdate(_newsList); // <-- insert unmanaged to Realm
);
【讨论】:
以上是关于如何将java列表存储在领域android数据库中的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android JAVA 的列表视图中显示部分但不是全部 JSON 数据
您如何在 Java 中使用 Google App Engine 数据存储中的列表属性?
如何将本地存储中的 JSON 对象添加到 Android Studio 上的片段列表