Android:使用微调器更新RealmObject

时间:2016-03-24 13:26:08

标签: android realm

我有两个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,并且只要项目被更新,微调器就会重置为第一个项目。??

我想可能有更好的方法来做到这一点,因为它应该是一个常见的模型 - 视图用例。

0 个答案:

没有答案