在我的应用程序中,我需要让Spinner具有一组值,例如:
用户选择其中一个,应用程序向服务器发送请求.要发送请求,我需要将用户的选择编码为int值:
在UI中,这些值是本地化的,更重要的是,它们可以按不同的顺序排列,具体取决于区域设置,例如:
我想要的是将所有这些东西都放在可本地化的XML中(因此本地化团队只需要编辑XML文件,而不是代码):
我花了一些时间思考这个问题,我的解决方案就在这里.
在strings.xml中:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="day_today">???????</string>
<string name="day_tomorrow">??????</string>
<string name="day_after_tomorrow">???????????</string>
<array name="day_values">
<item>@string/day_after_tomorrow</item>
<item>@string/day_tomorrow</item>
<item>@string/day_today</item>
</array>
</resources>
Run Code Online (Sandbox Code Playgroud)
在layout.xml中:
<Spinner
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/day"
android:entries="@array/day_values" />
Run Code Online (Sandbox Code Playgroud)
在MyActivity.java中:
private int[] dayMap;
private Spinner uiDay;
private final void setupUI(Bundle savedInstanceState) {
uiDay = (Spinner)findViewById(R.id.day);
final TypedArray dayValues = getResources().obtainTypedArray(R.array.day_values);
dayMap = new int[dayValues.length()];
for (int i = 0; dayMap.length > …Run Code Online (Sandbox Code Playgroud)