Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在域中加载对象的单个字段_Android_Realm - Fatal编程技术网

Android 在域中加载对象的单个字段

Android 在域中加载对象的单个字段,android,realm,Android,Realm,假设我有一个Book对象(id、姓名、作者) 假设我有一个很大的图书列表,是否可以只检索这些图书的名称而不检索整个对象 假设我有一个很大的图书列表,是否可以只检索这些图书的名称而不检索整个对象 当然可以,请看: private RealmChangeListener<RealmResults<Book>> listener = (results) -> { adapter.updateData(results); }; RealmResults<Bo

假设我有一个Book对象(id、姓名、作者)

假设我有一个很大的图书列表,是否可以只检索这些图书的名称而不检索整个对象

假设我有一个很大的图书列表,是否可以只检索这些图书的名称而不检索整个对象

当然可以,请看:

private RealmChangeListener<RealmResults<Book>> listener = (results) -> {
    adapter.updateData(results);
};

RealmResults<Book> books;

void blah() {
    books = realm.where(Book.class).findAllAsync();
    books.addChangeListener(listener);
}
这样做的原因是,虽然RealmResults计算“如何访问给定对象”,但实际上通过调用
book.getName()
只加载书籍的名称

基本上,托管RealmObjects是延迟访问的,并且当调用给定属性的访问器时,领域本身只加载给定的对象属性:在本例中,
book.getName()



至于获取
列表
,不太可能。这将从每个对象读取属性。

也许我不需要将书籍传递给适配器,而只需将名称添加到列表中?另外,是否需要在“addChangeListener”中执行此操作?为什么不是一个普通的查询呢?这是一个普通的查询,一个异步的查询。如果您通过迭代列表来提取
List
,那么您将急切地读取每个字符串,而不是在访问对象的属性时。无论这是不是你想要的取决于你的个人需求,ofc。虽然我不建议在UI线程上这样做。如果您使用的是我的库
monary
,那么您将执行
findallappedwithchanges
,并接收
LiveData
。是的,我需要一个完整的列表来操作,因此对结果进行迭代是否只加载名称而不加载整个对象?谢谢技术上是的。
public class MyAdapter extends ___Adapter {
   ...

   public class ViewHolder /* ... */ {
       public void bind(Book book) {
           bookName.setText(book.getName());
       }
   }
}