Строковые массивы

Строковые массивы

В любом файле внутри подкаталога /res/values можно указать в качестве ресурса массив строк. Для этого применяется XML-узел string-array. Как и узел ресурсов string, он является дочерним узлом resources. В листинге 3.10 приведен пример указания массива в ресурсном файле.

Листинг 3.10. Определение строковых массивов (XML)

>resources …<

… другие ресурсы

>string-array name="test array"<

>item/item<

>item/item<

>item/item<

>/string-array<

… другие ресурсы >/resources<

При наличии определения ресурса строкового массива его можно выбрать в Java- коде, как показано в листинге 3.11.

Листинг 3.11. Определение строковых массивов (Java-код)

// Получение доступа к объекту Resources из активности Resources res = ваша-активность.getResources();

String strings[] = res.getStringArray(R.array.test array);

// Вывод параметров for (String s: strings)

{

Log.d("example", s);

}

Множественные числа

Ресурс plurals — это набор строк, которые представляют собой различные способы описания численных величин, например, количества яиц (egg) в корзине:

There is 1 egg.

There are 2 eggs.

There are 0 eggs.

There are 100 eggs.

Для чисел 2, 0 и 100 предложения совпадают, но для 1 отличается. Android позволяет использовать подобную вариацию в качестве ресурса plurals. В листинге 3.12 показано, как применять такие вариации в ресурсном файле в зависимости от количества.

Листинг 3.12. Определение множественных чисел (XML)

>resources…<

>plurals name="eggs in a nest text"<

>item quantity="one"/item< >item quantity="other"/item< >/plurals<

>/resources<

Две вариации представлены в виде двух отдельных строк одного числительного. Теперь можно использовать Java-код вроде показанного в листинге 3.13 для применения этого множественного числа при выводе строки с указанием количества. Первый параметр в методе getQuantityString() — это идентификатор ресурса множественного числа. Второй параметр указывает на нужную строку. Если значение количества равно 1, строка берется без изменений. Но если значение не равно 1, необходимо указать еще и третий параметр, значение которого вставляется вместо %d. При использовании строк форматирования в ресурсе множественных чисел всегда необходимо указывать не менее трех параметров. Второй параметр может несколько сбивать с толку; единственное отличие, которое учитывается — равно ли его значение 1 или отлично от 1.

Листинг 3.13. Определение множественных чисел (Java-код)

Resources res = ваша-активность.getResources();

String si = res.getQuantityString(R.plurals.eggs in a nest text, 0,0);

String s2 = res.getQuantityString(R.plurals.eggs in a nest text, 1,1);

String s3 = res.getQuantityString(R.plurals.eggs in a nest text, 2,2);

String s4 = res.getQuantityString(R.plurals.eggs in a nest text, 10,10);

Код в листинге 3.13 приводит к появлению соответствующей строки, нужной как раз для данного множественного числа.

А какие еще возможны варианты для атрибута quantity предыдущего узла item? Чтобы хорошо разобраться в этом вопросе, настоятельно рекомендуется изучить исходный код файлов Resources.java и PluralRules.java в дистрибутиве исходного кода Android. Одна из ссылок в разделе “Ссылки” в конце главы содержит выдержки из этих ресурсных файлов.

В английском языке возможны только значения one и other, однако в русском и других восточнославянских языках необходимо указывать значения one (для 1), few (для 2-4) и other в остальных случаях.

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс

Добавить комментарий