Android Java - Помещение всех имен файлов из R.raw в массив без указания вручную каждого - PullRequest
2 голосов
/ 18 октября 2010

На мой вопрос есть 2 части, но обе они связаны.Я искал повсюду, но не могу найти способ вставить в массив все имена файлов из R.raw, такие как MP3 в строковом формате.

Я также хочу создавать новые кнопки на лету вJava, в отличие от использования файлов XML для разметки кнопок.

psuedocode:

array [] = поместить все имена файлов из R.raw в этот массив с именем файла;

count = count num строк в массиве [];

// Я хочу иметь возможность сделать это с этим массивом для (int i = 0; i

Заранее благодарен за любую помощь, которую может предоставить любой!

Ответы [ 2 ]

2 голосов
/ 18 октября 2010

Краткий ответ: Вы не можете.

Длинный ответ: R.raw и лайки генерируются во время сборки, таким образом, статично в вашем коде (вы не можете динамически добавлять записи в эти объекты из вашего приложения). По сути, R это просто класс, который выглядит примерно так:

package com.yourapp;
public class R {
    public class raw {
       public static final int file_1 = 123456; // where 123456 is the address where that file will be found
       public static final int file_2 = 789012;
       // ...
    }
}

Таким образом, нет никакого способа (о котором я знаю) получить массив этих атрибутов.


Я рекомендую использовать каталог assets/ вместо R.raw. Таким образом, вы сможете использовать AssetManager.list() для получения списка файлов (и другие функции AssetManager для фактической работы с файлами).

1 голос
/ 06 октября 2012

Вы можете использовать отражение:

Field [] f=R.raw.class.getFields();
for (Field field : f) {
    field.getName();

}
...