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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我应该使用copyFromRealm()来填充Spinner吗?相关的知识,希望对你有一定的参考价值。

我已经阅读了一些关于何时使用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)。

我的想法就在这里吗?

答案

对于Spinners,如果你不打算直接改变东西,那么你可以使用RealmBaseAdapter,只要你自定义getDropDownView

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

以上是关于我应该使用copyFromRealm()来填充Spinner吗?的主要内容,如果未能解决你的问题,请参考以下文章

SQL - 使用 select 语句和循环来填充存储过程

SQL - 使用表填充数据

我们啥时候应该在布局中使用 dp 或 sp?

我应该使用 set_value() 在 CodeIgniter 中重新填充表单吗

我应该用啥值填充我的数组以指示空白?

我应该如何访问有关用于使用RxSwift和MVVM填充表格视图的数组的数据