【问题标题】:How to retrieve specific object information from a spinner如何从微调器中检索特定对象信息
【发布时间】:2019-10-27 07:21:52
【问题描述】:

我正在处理我的 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 填充的,TreeMap 从文本文件中获取对象

【问题讨论】:

  • 获取微调器位置,然后执行基于位置的操作。

标签: java android android-studio spinner


【解决方案1】:

微调器列表总是由其适配器提供的字符串填充,因此当从微调器中选择一个项目时,您不能期望除了字符串之外的其他内容;所以你需要一些方法来利用这个字符串来获取你的自定义对象(在你的例子中是“Course”); switch 语句是通过从 mySpinner.getSelectedItem().toString(); 返回的 String '课程名称',然后在每个 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
    }
}

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

【讨论】:

  • 感谢您的解释。问题是每个微调器包含大约 300 个 Course 类型的对象,这些对象是从文本文件中读取并输入到 TreeMap 中,然后输入到 ArrayList 以填充微调器。所以我不确定一个 Switch 语句是否足以处理这么多对象。
  • 你可以直接从你的 TreeMap 中获取课程对象,以课程名称为键吗?
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多