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

希望这会有所帮助。谢谢...

请让我知道它是否有效。谢谢...