我应该使用copyFromRealm()来填充Spinner吗?

时间:2017-12-23 04:57:41

标签: android realm

我已经阅读了一些关于何时使用copyFromRealm的答案和教程,但我仍然不确定我的理解是否正确;也就是说,当你想要有不受限制的对象时使用copyFromRealm(如果你改变它们,Realm DB中什么都不会改变)。

在我的情况下,我有一个Spinner,我想用Realm中的值填充它:

Spinner mySpinner = ...;

List<MyObjects> myObjects = RealmInstance.getInstance().getRealm().where(MyObject.class).findAll();
myObjects = RealmInstance.getInstance().getRealm().copyFromRealm(myObjects); // do I need this here?

List<String> entries = new ArrayList<>();
for(MyObject t : myObjects)
    entries.add(t.getName() + " (" + t.getDesc() + ")");

ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, entries);

mySpinner.setAdapter(adapter);

我认为我不需要将对象复制到非托管列表,因为我不会修改它们,而且无论如何都要将值复制到单独的数组(entries)。

我的想法就在这里吗?

1 个答案:

答案 0 :(得分:1)

对于Spinners,如果您不打算直接更改内容,则可以使用RealmBaseAdapter,只要您自定义getDropDownView

@Override
public View getDropDownView(int position, @Nullable View convertView,
        @NonNull ViewGroup parent) {
    ...
}