我已经阅读了一些关于何时使用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
)。
我的想法就在这里吗?
答案 0 :(得分:1)
对于Spinners,如果您不打算直接更改内容,则可以使用RealmBaseAdapter,只要您自定义getDropDownView
。
@Override
public View getDropDownView(int position, @Nullable View convertView,
@NonNull ViewGroup parent) {
...
}