我正在开发一个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'值。有人可以建议我解决这个问题吗?谢谢!
答案 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) {
}
});