【问题标题】:Returning a String from ArrayAdapter从 ArrayAdapter 返回一个字符串
【发布时间】:2011-12-04 06:38:39
【问题描述】:

我创建了一个 Spinner 和 ArrayAdapter,如下所示:

Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
final ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource(
            this, R.array.units_array1, android.R.layout.simple_spinner_item);
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter1);

units_array1 是一个在 xml 文件中声明的字符串数组,如下所示:

<string-array name="units_array1">
    <item>Centimeters</item>
    <item>Meters</item>
    <item>Kilometers</item>
    <item>Inches</item>
    <item>Foots</item>
    <item>Miles</item>
</string-array>

现在我想实现一些基于字符串数组中元素的 If-ELSE 条件。为此,我在互联网上进行了很多研究,但没有找到任何可行的解决方案。请帮助我实现一个函数,该函数使用适配器从字符串数组中返回单个元素。

【问题讨论】:

    标签: android android-layout android-widget spinner android-arrayadapter


    【解决方案1】:

    ArrayAdapter.getItem(position),其中位置是数组的索引。如果您想在 Spinner 中获取当前选中的项目,请使用 Spinner.getSelectedItemPosition() 作为 getItem() 的参数。

    这将返回CharSequence,因为您输入了您的适配器。如果您希望这些值作为字符串返回,请将您的适配器重新定义为 ArrayAdapter&lt;String&gt;

    HTH!

    【讨论】:

    • 我想返回用户触摸的值。我该怎么做??
    • adapter1.getItem( spinner1.getSelectedItemPosition() )
    【解决方案2】:
    spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View v, int position, long id3) {
            final String scale = adapter1.getItem(position);
            // scale is gonna be "Centimeters" or "Meters", etc...
            if (scale.equals("Centimeters")) {
                // do something
            } else if (scale.equals("Meters")) {
                // do something else 
            }
        }
    
        @Override
        public void onNothingSelected(AdapterView<?> parent) {
        }
    
    });
    

    【讨论】:

      【解决方案3】:

      ArrayAdapter 有 getItem(int position),它(如果你知道位置)会给你字符串。 ArrayAdapter 也有 getCount(),所以如果你不知道它的位置,你可以编写一个简单的 for 循环来获取每个元素。

      【讨论】:

      • 我想返回用户触摸的值。我该怎么做??
      • 查看 gwa 或 Arhimed 的回答
      【解决方案4】:

      您需要为您的微调器设置一个OnItemSelectedListener。然后在侦听器中,您将收到有关选择事件的通知。查看官方示例:Spinner

      【讨论】:

      • 现在我已经在 Spinner 上设置了 OnItemSelectedListener,我应该调用什么函数来返回点击的值??
      • @Spoilt:看起来我们不在同一个页面上。 :) 好的,你说“返回点击的值”是什么意思?从哪里回到哪里?在侦听器中,您已经获得了价值,对吗?那么是什么阻止您使用它来满足您的任何需求呢?
      • 你引用的例子是 Toast。我希望它返回一个字符串,以便我可以在其他地方使用它。我迷失了。我尝试创建一些自己的函数,一个接一个地测试,但到目前为止没有任何帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-15
      • 2013-04-14
      • 2014-12-04
      • 2019-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多