Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将枚举从xml放入微调器_Android_Xml_Layout - Fatal编程技术网

Android 将枚举从xml放入微调器

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

android中的微调器有问题,我无法将枚举值设置为其内容。以下是微调器的代码:

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

违约
通货
经验