Как получить «заголовок» вместо «значения» предпочтения с помощью getString()

#java #android #arrays #eclipse #sdk

#java #Android #массивы #eclipse #sdk

Вопрос:

Я новичок в программировании как на Java, так и на Android, и я учусь довольно быстро, но, похоже, я не могу найти никакого ответа на этот вопрос после часа поиска в Google…

Я настроил свое приложение для Android с помощью preferences.xml в котором используется запись ListPreference. Это относится к двум массивам строк, один для отображения списка, другой для фактических значений:

     <ListPreference
        android:title="Draw Rule"
        android:summary="Choose between Draw 1 and Draw 3"
        android:key="draw_rule"
        android:defaultValue="draw3"
        android:entries="@array/drawrule"
        android:entryValues="@array/drawruleValues" />
  

Мой arrays.xml выглядит так:

 <string-array name="drawrule">
    <item name="draw1">Draw 1</item>
    <item name="draw3">Draw 3</item>
</string-array>
<string-array name="drawruleValues">
    <item name="draw1">draw1</item>
    <item name="draw3">draw3</item>
</string-array>
  

Чтобы получить предпочтения, я начинаю с использования getDefaultSharedPreferences :

     SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
  

Я понимаю, как получить правильное значение из drawruleValues с помощью sharedPrefs.getString("draw_rule", "null") . Моя проблема в том, что для целей отображения я хотел бы вместо этого показывать элемент из drawrule, а не drawruleValues (например, "Draw Setting: Draw 3" ).

Кто-нибудь может сказать мне, как это сделать?

Ответ №1:

Вариант № 1: Не использовать отдельные <string-array> ресурсы. Используйте drawrule для обоих массивов в определении предпочтения.

Вариант № 2: Выполните итерацию по содержимому drawruleValues (через getStringArray() для Resources объекта), чтобы найти индекс значения, затем используйте это для получения «заголовка» из drawrule массива (опять же, через getStringArray() для Resources объекта).

Комментарии:

1. Я думаю, что вариант 1 звучит примерно так. По мере того, как я буду больше изучать код, специфичный для Java и Android, я, вероятно, смогу позже придумать другие способы. Огромное спасибо!