使用Realm进行数据存储时,做了一个功能,离线状态下,从数据库读取之前存储的数据,正常是读取数据库内的数据进行显示,结果崩溃了
报错:This method is not supported by RealmResults 意思是 RealmResults不支持此方法
具体看下我的代码
这段else就是断网状态下,从数据库读取数据的操作,然后数据传给view进行显示,list是为了底下获取position用到
接着这个是fragment里的view方法实现,数据给adapter,这里还做了一次clear,就是这里报错
因为我直接操作了realm查询出来的list,报错,以下是stackoverflow的回答,参考下:
That's because RealmResults
is just a set of pointers that satisfy the condition defined in the query. You can't manipulate it, nor should you if you just intend to show every element in your adapter.
In fact, Realm was explicitly designed to simplify the workflow of "downloading data on a background thread and saving the data in a database", and "showing the data downloaded on a background thread automatically on the UI thread".
谷歌翻译:
这是因为RealmResults只是一组满足查询中定义条件的指针。您不能操作它,如果您只想显示适配器中的每个元素,也不应该。 实际上,Realm是为了简化“在后台线程上下载数据并将数据保存在数据库中”的工作流程,并且“在UI线程上自动显示在后台线程上下载的数据”。
所以这里我做的处理也很简单,第一段代码换下位置:
这里创建了个list来保存数据库查询出来的数据,这样我们就可以操作这个list了,避免直接去操作RealmResult,问题解决
有时间学下MarkDown用法,不然排版实在是不美观。
网友评论