我有两个RealmObjects,比如,
public class Dog extends RealmObject {
@Required
private String name;
private int age;
}
public class Person extends RealmObject {
@Required
private String name;
private Dog dog; // A person has only one dog (a relationship)
}
在其中一项活动中,我想让用户为给定的人选择狗。
我以为我会使用微调器。
我还从Realm-Examples获得了一个示例代码,它为ListView做了类似的事情。
public class DogListAdapter extends RealmBaseAdapter<Dog> implements SpinnerAdapter
到目前为止一切正常。微调器列表会自动更新以反映领域中的更改。
但是,当我必须首先显示GUI时,我想将所选项目设置为当前的Person.dog.name。
这样做的最佳方式是什么?
我在onResume()中做了类似的事情:
dogNameSpinner.setSelection(RealmUtils.resultIndexOf(dogsResult, person.getDog()));
其中,RealmUtils.resultIndexOf
是一个小实用函数:
public static int resultIndexOf(RealmResults results, RealmObject obj) {
for(int i=0; i < results.size(); i++ ) {
if(results.get(i) == obj) {
return i;
}
}
return 0;
}
这不起作用。我怀疑可能是因为调用了realm.changeListeners,并且只要项目被更新,微调器就会重置为第一个项目。??
我想可能有更好的方法来做到这一点,因为它应该是一个常见的模型 - 视图用例。