【问题标题】:Android - get item tag/name value of a spinner componentAndroid - 获取微调组件的项目标签/名称值
【发布时间】:2015-10-08 16:18:19
【问题描述】:

我正在开发一个 android 应用程序,在该应用程序中,我使用微调器来填充 3 个值(+、-、+/-),这些值作为(Plus、Minus、PlusMinus)存储在后端的枚举变量中。

“strings.xml”看起来像这样

<string-array name="alert_variation">
    <item tag="Minus">+</item>
    <item tag="Plus">-</item>
    <item tag="PlusMinus">+/-</item>
</string-array>

'Spinner' 组件看起来像这样

<Spinner
     android:id="@+id/alert_variation_spinner"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_gravity="center"
     android:entries="@array/alert_variation"
     android:spinnerMode="dropdown" />

当微调器值发生变化时,如何在我的 Activity.java 文件中获取选定的标记值(Plus、Minus、PlusMinus)而不是(+、-、+/-)值?如果需要,我什至可以使用&lt;item name=""&gt;&lt;/&gt;

获取 +,-,+/- 值的代码是

"alertVariationType.getSelectedItem().toString()"

但我想获取“标签”或“名称”值。有人可以建议我解决这个问题吗?谢谢!

【问题讨论】:

    标签: android tags spinner selecteditem


    【解决方案1】:

    我现在没有可用的 Android Studio,因此对于无法独立验证这一点,我深表歉意,但您尝试过吗?

    alertVariationType.getSelectedItem().getTag().toString()
    

    【讨论】:

    • 迈克,感谢您的回复。但不幸的是,没有这样的东西。
    【解决方案2】:

    此问题的另一种解决方案 - 从自定义对象创建数组适配器。方法如下:

    public class Signs {
    
    String name,sign;
    
    public Signs(String name, String sign)
    {
        this.name=name;
        this.sign=sign;
    }
    
    public String toString()
    {
        return sign;
    }
    }
    

    并在微调器中像这样使用它,输出字符串符号将是加号/减号等:

     Spinner spinner = (Spinner) findViewById(R.id.spinner);
    
     ArrayAdapter<Signs> signs = new ArrayAdapter<Signs>   (this,
     android.R.layout.simple_dropdown_item_1line, new Signs[]{new Signs("Plus","+"),
     new Signs("Minus","-"), new Signs("PlusMinus","+/-")});
    
        spinner.setAdapter(signs);
    
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    
               String sign =   ((Signs)parent.getItemAtPosition(position)).name;
    
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
    
            }
        });
    

    【讨论】:

    • 您好 Varsha,感谢您的明确回复。让我检查一下,如果我有任何疑问,请回复您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多