我正在开发一款可以帮助租赁业务的应用。我有一个微调器从阵列中提取它的内容......
来自datalist.xml:
<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>
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>
java中的Spinner代码:
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
}
}
);
如何设置它,以便当用户从微调器中选择一个选项时,它会将该选项保存为整数变量,反映小时数,然后可以在此应用程序的其他部分中使用?
例如......有人选择“3小时”并将一个名为“durnumb”的变量保存为3.或者某人选择“周”并将durnumb的值保存为168(24小时x 7天)
答案 0 :(得分:2)
在共享偏好设置中保存字符串,然后在应用中的任意位置再次检索它。
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);
至于从几周或“3小时”到“3”的翻译,我无法提供建议,因为它非常依赖于您的需求。对于每个用例,这应该是一个单独的方法。
没有理由为什么翻译不应该直接转换为Integer并将其传递给PreferencesData.saveInt()这样的方法,但是你的问题似乎集中在String值上,这就是为什么它很可能很方便转换为可以说是“即时”字符串到整数'。
答案 1 :(得分:0)
最简单的方法就是这样做:
public static final int [] array = new int [] {1,2,4,6,etc ...};
并按职位获得价值。