Android - 获取微调器组件的项标签/名称值

时间:2015-10-08 16:18:19

标签: android tags spinner selecteditem

我正在开发一个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)而不是(+, - ,+ / - )值?如果需要,我甚至可以使用<item name=""></>

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

"alertVariationType.getSelectedItem().toString()"

但我希望获得'tag'或'name'值。有人可以建议我解决这个问题吗?谢谢!

2 个答案:

答案 0 :(得分:0)

我现在没有可以使用我的Android Studio,所以我为无法独立验证这一点而道歉,但你试过这个吗?

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

答案 1 :(得分:0)

此问题的另一个解决方案 - 从自定义对象创建一个arrayadapter。以下是:

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) {

        }
    });