如何从values \ arrays.xml-file获取“人类可读”部分

时间:2013-02-25 17:30:34

标签: android

我无法弄清楚如何完成以下操作;

我想显示“人类可读的表单”(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的活动中显示此内容,只是在正常的活动中。 任何想法如何做到这一点?

2 个答案:

答案 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";
}