如何从微调器中检索特定对象信息

How to retrieve specific object information from a spinner

我正在处理我的 android 应用程序中的一些微调器,在单击按钮时我想获取特定的对象信息。我知道 mySpinner.getSelectedItem().toString(); 但是打印出我的对象 toString(); 方法是什么。假设我想从当前在微调器上选择的 Course 对象中 getCredits();。我该怎么做?

这里是为了让您了解我正在尝试做什么:

for(int i = 0; i < allSpinners.size(); i++) {
            System.out.println(allSpinners.get(i).getSelectedItem().toString());

        }

我需要从列表中的所有微调器中获得所有积分。 此代码而不是 System.out.println(); 需要通过 getCredits(); 方法获取 Course 对象的学分并将它们加在一起 ​​+= 但我不确定如何到达该对象在旋转器列表中。

编辑:抱歉不清楚。每个微调器包含大约 300 个对象,这些对象是从 ArrayList 中提取的,ArrayList 是通过从文本文件中获取对象的 TreeMap 填充的

在Android中你可以这样做

    Spinner spinner = findViewById(R.id.spinner1);
    spinner.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            switch (position) {
                case 0:
                    //Do what you want
                    break;

                case 1:
                    //Do what you want
                    break;
            }
        }
    });

微调器列表总是 填充了其适配器提供的字符串,因此当从微调器中选择一个项目时,除了字符串之外,您别无所求;所以你需要一些方法来利用这个字符串来获取你的自定义对象("Course" 在你的例子中); switch 语句是通过从 mySpinner.getSelectedItem().toString(); 返回的 String 'course name' 来实现的,然后在每个 switch case 上实例化一个 Course 对象,然后像示例中那样做任何您想做的事 getCredits();

如果您要触发侦听器,同样适用

mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        switch(position) // switch on item position in adapter

        String selection = (String) parent.getItemAtPosition(position);
        switch(selection) // switch on item String
    }
}

如果您需要任何进一步的帮助,我将非常欢迎!

谢谢大家的提醒,原来courseMap.get(allSpinners.get(i).getSelectedItem().toString()).getCredits();是我应该做的。所有这些都在一个 for 循环中,其中 i < allSpinner.size(); 是 Spinners

的数组