Java 如何在微调器中显示选项,当选中该选项时,将其另存为整数变量?
我正在开发一款帮助租赁业务的应用程序。我有一个微调器,从数组中提取内容 从datalist.xml:Java 如何在微调器中显示选项,当选中该选项时,将其另存为整数变量?,java,android,arrays,string,spinner,Java,Android,Arrays,String,Spinner,我正在开发一款帮助租赁业务的应用程序。我有一个微调器,从数组中提取内容 从datalist.xml: <string-array name="dur"> <item>@string/dur1</item> <item>@string/dur2</item> <item>@string/dur3</item> <item>@string/dur4</item>
<string-array name="dur">
<item>@string/dur1</item>
<item>@string/dur2</item>
<item>@string/dur3</item>
<item>@string/dur4</item>
<item>@string/dur5</item>
<item>@string/dur6</item>
<item>@string/dur7</item>
<item>@string/dur8</item>
<item>@string/dur9</item>
<item>@string/dur10</item>
<item>@string/dur11</item>
</string-array>
@字符串/dur1
@字符串/dur2
@字符串/dur3
@字符串/dur4
@字符串/dur5
@字符串/dur6
@字符串/dur7
@字符串/dur8
@字符串/dur9
@字符串/dur10
@字符串/dur11
strings.xml:
<string name="dur1">Half hour</string>
<string name="dur2">1 hour</string>
<string name="dur3">2 hours</string>
<string name="dur4">3 hours</string>
<string name="dur5">4 hours</string>
<string name="dur6">5 hours</string>
<string name="dur7">6 hours</string>
<string name="dur8">Over night</string>
<string name="dur9">24 hours</string>
<string name="dur10">Week</string>
<string name="dur11">Month</string>
半小时
1小时
2小时
3小时
4小时
5小时
6小时
通宵
24小时
周
月
java中的微调器代码:
Spinner spinner = (Spinner) findViewById(R.id.spinnerDuration);
ArrayAdapter <CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.dur, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(
new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
int index = arg0.getSelectedItemPosition();
// storing string resources into Array
dur = getResources().getStringArray(R.array.dur);
}
public void onNothingSelected(AdapterView<?> arg0) {
// do nothing
}
}
);
Spinner Spinner=(Spinner)findViewById(R.id.spinnerDuration);
ArrayAdapter=ArrayAdapter.createFromResource(这个,R.array.dur,android.R.layout.simple\u微调器\u项);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转器。设置适配器(适配器);
spinner.setOnItemSelectedListener(
新建MSelectedListener(){
已选择公共视图(AdapterView arg0、视图arg1、内部arg2、长arg3){
int index=arg0.getSelectedItemPosition();
//将字符串资源存储到数组中
dur=getResources().getStringArray(R.array.dur);
}
无选择的公共无效(AdapterView arg0){
//无所事事
}
}
);
我如何设置它,以便当用户从微调器中选择一个选项时,它将该选项保存为一个整数变量,反映小时数,然后可用于此应用程序的其他部分
例如,有人选择“3小时”,它将名为“durnumb”的变量保存为3。或者有人选择“Week”并将durnum的值保存为168(24小时x7天)最简单的方法就是这样做: 公共静态final int[]数组=新int[]{1,2,4,6等..}
并按位置获取值。将字符串另存为共享首选项,然后在应用程序中的任何位置再次检索该字符串
public class PreferencesData {
public static void saveStringAsInt(Context context, String key, String value) {
SharedPreferences sharedPrefs = PreferenceManager
.getDefaultSharedPreferences(context);
try {
int intValue = Integer.parseInt(value);
sharedPrefs.edit().putInt(key, intValue).commit();
} catch (NumberFormatException e) {
Log.e("PreferencesData", "Unable to parse to int: " + value)
}
}
public static int getInt(Context context, String key, int defaultValue) {
SharedPreferences sharedPrefs = PreferenceManager
.getDefaultSharedPreferences(context);
return sharedPrefs.getInt(key, defaultValue);
}
}
用法:
// save
// do string manipulation before parsing e.g "weeks" = "168" or "3 hours" = "3" (for example substring away first encounter of whitespace)
PreferencesData.saveStringAsInt(context, "weeks", "25");
// retrieve
int weeks = PreferencesData.getInt(context, "weeks", -1);
至于把“三个星期”或“三个小时”翻译成“三个小时”,我不能给出建议,因为这完全取决于你的需要。对于每个用例,这应该是一个单独的方法
没有理由不将转换直接转换为整数并将其传递给PreferencesData.saveInt()之类的方法,但您的问题似乎集中在字符串值上,这就是为什么它最容易从字符串转换成整数的方法。否则,如果您遇到问题,请向我们报告。