gpt4 book ai didi

java - 单击时微调器选定的项目不显示

转载 作者:行者123 更新时间:2023-12-02 09:54:09 25 4
gpt4 key购买 nike

我添加了一个从房间数据库检索数据的微调器,当我单击微调器时,它会正确显示可用的项目,但是当我选择一个时,它不会出现在选定的微调器中,并且什么也不显示

我发现 CollegeSpinner.setOnItemSelectedListener即使我选择某些内容也不会触发

    ArrayAdapter<String> adapter;
CollegeViewModel collegeViewModel;
Spinner collegeSpinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_note);

collegeSpinner = (Spinner) findViewById(R.id.spinner_college);
final ArrayList<String> collegesList = new ArrayList<>();
final CollegeAdapter collegeAdapter = new CollegeAdapter();
collegeViewModel = ViewModelProviders.of(this).get(CollegeViewModel.class);
collegeViewModel.getAllColleges().observe(this, new Observer<List<College>>() {
@Override
public void onChanged(List<College> colleges) {
//this is what happens when when data changes // the code bellow should be related to changing the view
collegeAdapter.setColleges(colleges); // getting colleges from database and assigning it to collegeadapter
for (int i = 0; i < collegeAdapter.getItemCount(); i++) { // accessing the adapter to add it's elements to collegeList
collegesList.add(collegeAdapter.getCollegeAt(i).getCollegeName());
}
}
});
adapter = new ArrayAdapter<>(getApplicationContext(), R.layout.small_view, collegesList);
collegeSpinner.setAdapter(adapter);
collegeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
// this function doesn't work even when i select something
}

@Override
public void onNothingSelected(AdapterView<?> adapterView) {
// also doesn't work
}
});

}

最佳答案

实际上我找到了一个解决方案,但我不明白它为什么有效但这与 CollegeAdapter 被声明为最终版本有关,但我必须将其声明为最终版本,否则我会在 onChanged() 中收到错误

我创建了一个函数,将 CollegeAdapter 中的元素添加到 CollegeList 中因此该函数将 CollegeAdapter 的值分配给参数中的一个新的 CollegeAdapter,该参数不是最终的,并且工作原理如下

这是我如何实现的

collegeViewModel.getAllColleges().observe(this, new Observer<List<College>>() {
@Override
public void onChanged(List<College> colleges) {
//this is what happens when when data changes // the code bellow should be related to changing the view
collegeAdapter.setColleges(colleges); // getting colleges from database and assigning it to collegeadapter
addElements(collegeAdapter, collegesList);
}
});

这是函数

public void addElements(CollegeAdapter collegeAdapter, ArrayList<String> collegesList) {
for (int i = 0; i < collegeAdapter.getItemCount(); i++) {
collegesList.add(collegeAdapter.getCollegeAt(i).getCollegeName());
}
collegeSpinner.setAdapter(adapter);
}

关于java - 单击时微调器选定的项目不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56119317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com