Java 微调器所选项目在单击时不显示

Java 微调器所选项目在单击时不显示,java,android,mvvm,spinner,android-room,Java,Android,Mvvm,Spinner,Android Room,我添加了一个微调器,用于从房间数据库检索数据 ,当我单击微调器时,它会正确显示可用项目,但当我选择一个项目时,它不会在微调器中显示为已选择,并且不会显示任何内容 我发现collegeSpinner.setonimselectedListener 即使在我选择某些内容时也不会触发 阵列适配器; CollegeViewModel CollegeViewModel; 纺纱工; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(save

我添加了一个微调器,用于从房间数据库检索数据 ,当我单击微调器时,它会正确显示可用项目,但当我选择一个项目时,它不会在微调器中显示为已选择,并且不会显示任何内容

我发现collegeSpinner.setonimselectedListener 即使在我选择某些内容时也不会触发

阵列适配器;
CollegeViewModel CollegeViewModel;
纺纱工;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u add\u note);
collegeSpinner=(Spinner)findViewById(R.id.Spinner_学院);
最终ArrayList collegesList=新ArrayList();
最终夹头适配器夹头适配器=新夹头适配器();
collegeViewModel=ViewModelProviders.of(this.get)(collegeViewModel.class);
collegeViewModel.getAllColleges().observe(这是新的观察者(){
@凌驾
更改后的公共空间(列出学院){
//这就是数据更改时发生的情况//下面的代码应该与更改视图相关
collegeAdapter.setColleges(colleges);//从数据库中获取学院并将其分配给collegeAdapter
对于(int i=0;i
collegeSpinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
String str=collegeSpinner.getSelectedItem().toString();
}
@凌驾
未选择公共无效(AdapterView父级){
String str=llist.get(0);
}
});

转到,然后将源代码类型更改为json,将注释样式更改为Gson,将整个json复制到其中,这样就可以在java类中创建整个json模型了

实际上,我找到了一个解决方案,但我不清楚它为什么有效 但这与collegeAdapter被声明为final有关,但我必须将其声明为final,否则在onChanged()中会出现错误

我制作了一个函数,将collegeAdapter中的元素添加到collegeList 因此,函数将collegeAdapter的值分配给参数中的新collegeAdapter,该参数不是final,它的工作方式是这样的

下面是我如何实现它的

collegeViewModel.getAllColleges().observe(这是新的观察者(){
@凌驾
更改后的公共空间(列出学院){
//这就是数据更改时发生的情况//下面的代码应该与更改视图相关
collegeAdapter.setColleges(colleges);//从数据库中获取学院并将其分配给collegeAdapter
附录(学院适配器、学院列表);
}
});
这是函数

public void addElements(CollegeAdapter CollegeAdapter,ArrayList collegesList){
对于(int i=0;i
它必须工作。。。你的小视图布局里面是什么?只是一个文本视图,没什么问题,我找到了一个解决方案,检查它覆盖的函数没有被触发,我找到了另一个解决方案
collegeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                String str = collegeSpinner.getSelectedItem().toString();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                String str = llist.get(0);
            }
        });