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

时间:2019-10-26 20:31:25

标签: java android android-studio spinner

我正在与我的android应用程序中的一些微调器打交道,然后单击按钮,我想获取特定的对象信息。我知道mySpinner.getSelectedItem().toString();,但这可以打印出我的Objects toString();方法。假设我想从微调器上当前选择的getCredits();对象中Course。我该怎么办?

这是给您一个我要做什么的想法:

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

        }

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

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

3 个答案:

答案 0 :(得分:1)

微调器列表总是 ,其适配器提供了字符串,因此从微调器中选择项目时,除了字符串以外,您别无所求。因此,您需要某种方式来利用此字符串来获取您的自定义对象(示例中为“ Course”);通过使用switch返回的String'课程名称',然后在每个mySpinner.getSelectedItem().toString();上实例化一个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
    }
}

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

答案 1 :(得分:0)

在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;
            }
        }
    });

答案 2 :(得分:0)

感谢大家的提醒,事实证明courseMap.get(allSpinners.get(i).getSelectedItem().toString()).getCredits();是我应该怎么做的。所有这些都在一个for循环中,其中i < allSpinner.size();是Spinners的数组