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

时间:2018-07-11 15:27:24

标签: android realm

假设我有一个Book对象(id,名称,作者)。

假设我有很多书籍,是否可以仅检索这些书籍的名称而无需检索整个对象?

1 个答案:

答案 0 :(得分:0)

  

假设我有很多书籍,是否可以仅检索这些书籍的名称而无需检索整个对象?

好的,请参阅:

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

RealmResults<Book> books;

void blah() {
    books = realm.where(Book.class).findAllAsync();
    books.addChangeListener(listener);
}

public class MyAdapter extends ___Adapter {
   ...

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

之所以可行,是因为RealmResults评估“如何访问给定对象”时,您实际上通过调用book.getName()仅加载了书名。

基本上,托管的RealmObjects是延迟访问的,并且Realm本身仅在调用给定属性的访问器时才加载给定对象属性:在这种情况下为book.getName()


关于获得List<String>,不是真的。这样将从每个对象读取属性。