如何解决Spinner 未显示任何选定的项目 活动
这是我作为 Android 初学者的第一个问题。我也不是母语人士,所以请原谅我的英语水平不好。
我想实现一个用于租用机器的 Android 应用程序。为了添加新合同,我创建了一个带有微调器的 AddVertragActivity.java
。这个微调器应该填充来自 Room 数据库的数据。问题是,我可以填充微调器以查看所有项目,但是当我单击任何项目时,什么也没有发生。我发现在调试模式下,onItemSelected
方法从未被调用。
我在这里阅读了许多其他帖子,但没有解决我的问题。由于没有显示错误消息,我不知道下一步该怎么做。每次我在下拉列表中选择一个项目时,日志文件中都会出现警告:D/Openglrenderer: endAllActiveAnimators on 0xe54e7a70 (dropdownlistview) with handle 0xbc8d3a30
.
所以我也做了一些研究,只找到了几个答案,这对我没有帮助。
每次我开始活动时,都会有一个关于 HiddenField 的警告。但是我将 android 版本减少到牛轧糖,这个警告已经过时了。所以这也没有解决问题:W/.viewpager_tes: Accessing hidden field Landroid/widget/AbsListView;->mIsChildViewEnabled:Z (greylist,reflection,allowed)
当您需要一些额外的信息时,请告诉我。提前感谢您的建议。
活动
public class AddVertragActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
private Spinner spinnerB;
private Baumaschinenviewmodel bviewmodel;
private List<String> baumaschineList = new ArrayList<String>();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_vertrag);
spinnerB = findViewById(R.id.spinnerBaumaschine);
bviewmodel = new viewmodelProvider(this).get(Baumaschinenviewmodel.class);
bviewmodel.getAllBaumaschinen().observe(this,baumaschines -> {
for (int i = 0; i < baumaschines.size(); i++) {
baumaschineList.add(baumaschines.get(i).getMachineName());
System.out.println(baumaschines.get(i).getRowid());
}
});
ArrayAdapter<String> spinnerBaumaschinenAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,baumaschineList);
spinnerBaumaschinenAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerBaumaschinenAdapter.notifyDataSetChanged();
spinnerBaumaschinenAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerB.setAdapter(spinnerBaumaschinenAdapter);
spinnerB.setonItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> parent,View view,int position,long id) {
if (parent.getItemAtPosition(position).equals("Baumaschine auswählen")) {
} else {
String item = parent.getItemAtPosition(position).toString();
Toast.makeText(parent.getContext(),"Selected: " + item,Toast.LENGTH_SHORT).show();
}
}
@Override
public void onnothingSelected(AdapterView<?> parent) {
}
}
解决方法
您缺少设置项侦听器的调用,这就是单击任何项时未调用它的原因。
执行如下操作。设置适配器 spinnerB.setAdapter(spinnerBaumaschinenAdapter);
spinnerB.setOnItemSelectedListener(this);
,
尝试使用 spinnerB.setOnItemClickListener
而不是 spinnerB.setOnItemSelectedListener
。
希望这会有所帮助。谢谢...
请让我知道它是否有效。谢谢...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。