我无法弄清楚如何完成以下操作;
我想显示“人类可读的表单”(refresh_interval_entries
),例如在Log.d()
中,与refresh_interval_values
中选择的内容相对应。
我在values\arrays.xml
中定义了两个数组:
<string-array name="refresh_interval_entries" translatable="false">
<item>1 minute</item>
<item>2 minutes</item>
<item>3 minutes</item>
</string-array>
<string-array name="refresh_interval_values" translatable="false">
<item>60</item>
<item>120</item>
<item>180</item>
</string-array>
我将refresh_interval_values
中的选定值保存在ListPreference中。
首先,我想做一些像这样的事情;
String[] mEntries = getResources().getStringArray(R.array.refresh_interval_entries);
但我认为这不会起作用,因为我无法获得mEntries[index]
的正确索引,因为我无法使用refresh_interval_values
中的值。
我不尝试在扩展PreferenceActivity
的活动中显示此内容,只是在正常的活动中。
任何想法如何做到这一点?
答案 0 :(得分:2)
在您的应用程序启动时,您从两个HashMap
中创建arrays
:
HashMap<String, String> dictionary = new HashMap<String, String>();
String[] mEntries = getResources().getStringArray(R.array.refresh_interval_entries);
String[] mValues = getResources().getStringArray(R.array.refresh_interval_values);
for (int i = 0; i < mEntries.length; i++) {
dictionary.put(mValues[i], mEntries[i]);
}
并使用它:
String entry = dictionary.get("60");
答案 1 :(得分:1)
做这样的事情:
{
...
String[] mEntries = getResources().getStringArray(R.array.refresh_interval_entries);
String[] mValues = getResources().getStringArray(R.array.refresh_interval_values);
Log.d(TAG, "120=" + getEntryFromValue("120", mEntries, mValues));
}
private String getEntryFromValue(String value, String[] mEntries, String[] mValues) {
for (int i=0; i < mValues.length; i++) {
if (value.equals(mValues[i])) {
// check mEntries length
return mEntries[i];
}
}
return "NOT FOUND";
}