Android 将枚举从xml放入微调器
android中的微调器有问题,我无法将枚举值设置为其内容。以下是微调器的代码:Android 将枚举从xml放入微调器,android,xml,layout,Android,Xml,Layout,android中的微调器有问题,我无法将枚举值设置为其内容。以下是微调器的代码: <Spinner android:id="@+id/spTrainingType" android:layout_width="match_parent" android:layout_height="match_parent" android:entries="@attr/TrainingType" android:prompt="@string/hint_train
<Spinner
android:id="@+id/spTrainingType"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:entries="@attr/TrainingType"
android:prompt="@string/hint_training_type" />
以下是enum:
<declare-styleable name="TrainingStyle">
<attr name="RecallType">
<enum name="Vibro" value="1" />
<enum name="Music" value="2" />
<enum name="Silent" value="3" />
<enum name="Alarm" value="4" />
</attr>
<attr name="RepeatType">
<enum name="Daily" value="1" />
<enum name="Weekly" value="2" />
<enum name="Monthly" value="3" />
</attr>
<attr name="TrainingType">
<enum name="Jogging" value="1" />
<enum name="Cross" value="2" />
<enum name="Climbing" value="3" />
<enum name="BikeTrip" value="4" />
</attr>
</declare-styleable>
那么,有没有办法将枚举放入微调器,或者只放入数组?或者可能是我做错了。
提前谢谢。据我所知,您试图做的事情在当前的形式下是不可能的。
attr
名称空间用于存放视图(组)
s/小部件
s等的“属性”,而不是值-因此简称。如果您想一想,如果支持此功能,则在Resources
类中可能会有类似于getEnumeration()
的方法,或者可能会有一个更通用的版本,用于将值映射到。。。嗯,Map
使键/值对与微调器一起工作的标准方法是为res/values/arrays.xml
中的键和值定义单独的数组。这样一个数组中的项是按顺序加载的,所以您可以使用基于索引的查找来匹配键和值(反之亦然)
另一种方法是将键和值合并成一个字符串,我相信如果搜索一点,您会发现建议的方法;e、 g.使用特殊的分隔符,但这可能意味着您需要在向用户显示之前对其进行预处理。这不是最灵活的解决方案,也绝对不是我想要的
也就是说,实现自己的从资源/xml文件加载键/值对并不难。如果您按照该链接访问类文档,实际上您会发现免费提供的一个非常基本的实现。:) 据我所知,你想做的事情在目前的形式下是不可能的。attr
名称空间用于存放视图(组)
s/小部件
s等的“属性”,而不是值-因此简称。如果您想一想,如果支持此功能,则在Resources
类中可能会有类似于getEnumeration()
的方法,或者可能会有一个更通用的版本,用于将值映射到。。。嗯,Map
使键/值对与微调器一起工作的标准方法是为res/values/arrays.xml
中的键和值定义单独的数组。这样一个数组中的项是按顺序加载的,所以您可以使用基于索引的查找来匹配键和值(反之亦然)
另一种方法是将键和值合并成一个字符串,我相信如果搜索一点,您会发现建议的方法;e、 g.使用特殊的分隔符,但这可能意味着您需要在向用户显示之前对其进行预处理。这不是最灵活的解决方案,也绝对不是我想要的
也就是说,实现自己的从资源/xml文件加载键/值对并不难。如果您按照该链接访问类文档,实际上您会发现免费提供的一个非常基本的实现。:) 以编程方式,这是可能的。我认为通过XML中的枚举是不可能的。它不起作用,只有XML中的字符串数组起作用
java代码中的编程示例:
public Enum ValueType {
DefaultType, NotSoDefaultType, AnotherType
}
Spinner viewTypeSpinner = (Spinner) findViewById(R.id.viewTypeSpinner);
ArrayAdapter viewarrayadapter = new ArrayAdapter<ConsignmentStatus>(this,
android.R.layout.simple_spinner_item,
ValueType.values());
viewTypeSpinner.setAdapter(viewarrayadapter);
viewarrayadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
公共枚举值类型{
DefaultType、NotsDefaultType、其他类型
}
微调器viewTypeSpinner=(微调器)findViewById(R.id.viewTypeSpinner);
ArrayAdapter视图ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple\u微调器\u项,
ValueType.values());
viewTypeSpinner.setAdapter(viewarrayadapter);
viewarrayadapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
通过XML中的字符串数组的示例:
布局:
<TextView android:text="@string/type_prompt"/>
<Spinner android:id="@+id/type" android:prompt="@string/type_prompt"/>
价值观:
<string-array name="type_array">
<item>Default</item>
<item>Currency</item>
<item>Experience</item>
</string-array>
违约
通货
经验
通过编程,这是可能的。我认为通过XML中的枚举是不可能的。它不起作用,只有XML中的字符串数组起作用
java代码中的编程示例:
public Enum ValueType {
DefaultType, NotSoDefaultType, AnotherType
}
Spinner viewTypeSpinner = (Spinner) findViewById(R.id.viewTypeSpinner);
ArrayAdapter viewarrayadapter = new ArrayAdapter<ConsignmentStatus>(this,
android.R.layout.simple_spinner_item,
ValueType.values());
viewTypeSpinner.setAdapter(viewarrayadapter);
viewarrayadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
公共枚举值类型{
DefaultType、NotsDefaultType、其他类型
}
微调器viewTypeSpinner=(微调器)findViewById(R.id.viewTypeSpinner);
ArrayAdapter视图ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple\u微调器\u项,
ValueType.values());
viewTypeSpinner.setAdapter(viewarrayadapter);
viewarrayadapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
通过XML中的字符串数组的示例:
布局:
<TextView android:text="@string/type_prompt"/>
<Spinner android:id="@+id/type" android:prompt="@string/type_prompt"/>
价值观:
<string-array name="type_array">
<item>Default</item>
<item>Currency</item>
<item>Experience</item>
</string-array>
违约
通货
经验