Подсчитать элементы в папке Drawable, которые начинаются с определенной строки - PullRequest
6 голосов
/ 23 февраля 2012

Как бы подсчитать количество элементов в папке для рисования, которые начинаются с "fr"?

Фон; Я хочу создать рандомизатор, чтобы выбрать случайное изображение из папки drawables. Чтобы сделать его перспективным на будущее, я хочу установить максимальное значение рандомизатора равным количеству предметов, которые могут быть выбраны.

1 Ответ

10 голосов
/ 23 февраля 2012

Как и другие ресурсы в Android, доступ к рисоваемым объектам осуществляется через класс 'R', который является просто набором статических классов, содержащих статические целочисленные поля.Не существует метода «получить все рисуемые имена» (по крайней мере, я его не знаю), кроме использования отражения.

Для рандомизации необходим список идентификаторов, которые можно рисовать.Вы можете автоматически заполнить этот список, используя отражение:

    import java.lang.reflect.Field;
    ...
    Field[] fields = R.drawable.class.getFields();
    List<Integer> drawables = new ArrayList<Integer>();
    for (Field field : fields) {
        // Take only those with name starting with "fr"
        if (field.getName().startsWith("fr")) {
            drawables.add(field.getInt(null));
        }
    }

Таким образом, вы получите список идентификаторов рисованных объектов, которые вас интересуют.Вы можете использовать эти идентификаторы позже, когда вы обычно используете, например, R.drawable.someResource

...