繁体   English   中英

如何从 ViewModel 中获取列表以显示在我的微调器中并可选择?

[英]How do I get a list from my ViewModel to display in my spinner and be selectable?

目前,我的微调器可以获取讲师列表并准确地显示在微调器下拉菜单中,但微调器没有默认值,即使在下拉菜单中选择了一个值,它也保持空白。 尝试获取 onItemSelected 中的值表明选择下拉列表中的任何值仍返回 null。 令我困惑的是,我的自定义适配器可以清楚地看到列表已正确保存在 ViewModel 之外,否则微调器下拉菜单根本不会显示正确的值,但适配器声明下方的 println 始终返回大小列表为 0。

我试过的修复~

更改了微调器的大小及其内容

更改了文本的颜色

创建了一个自定义 spinner_item.xml

<?xml version="1.0" encoding="utf-8"?>

<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="20sp"
    android:gravity="start"
    android:textColor="#000000"
    android:padding="10dp"
    />
termViewModel = new ViewModelProvider(this).get(TermViewModel.class);

        List<Entities.Instructor> allInstructor = new ArrayList<>();
        termViewModel.getAllInstructor().observe(getViewLifecycleOwner(), instructors ->{
            allInstructor.addAll(instructors);
            System.out.println("allInstructor size in the termViewModel is: " + allInstructor.size());
        });
        ArrayAdapter<Entities.Instructor> adapter = new ArrayAdapter<>(getActivity(), R.layout.spinner_item,
                allInstructor);
        System.out.println("outside of termViewModel: " + allInstructor.size());
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        instructorSpinner.setAdapter(adapter);
        adapter.notifyDataSetChanged();


        instructorSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                spinnerText = instructorSpinner.getSelectedItem().toString();
                System.out.println(spinnerText);
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });

已解决我已经在 termViewModel.getAllInstructor() 之后的 {} 之间移动了所有与微调器和适配器相关的代码,现在它可以工作了,但我发誓它应该让我从我的 ViewModel 复制一个列表并将其分配给我的列表onCreateView() 方法。 如果我遗漏了一些明显的东西,请指出😅

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM