2014-11-15 7 views
0

Я пишу приложение, в котором с помощью 200+ изображений, помещенных в вытяжке папки и все эти файлы следуют одинаковому соглашение сказать thumb+XПолучить последовательное имя файла из папки вытяжки

Для чтения/просмотра этих файлов один способ это выбрать, каждый вытащить файл, следуя R.drawable.XXX.

Есть ли способ прочитать это имя файла, используя цикл или что-то еще ... независимо от того, сколько файлов он будет обновлять в drawable, тогда не нужно прикасаться к исходному файлу.

Любое предложение!

ответ

0

Его очень простой сначала вы создаете значение строки как.

String name= "R.drawable.thumb"; 

Теперь петля это как

for(int i=1;i<=200;i++){ 
    String resource = name + i; 
    try { 
     Class c = Drawable.class; 
     Field idField = c.getDeclaredField(resource); 
     int resourceDrwable = idField.getInt(idField); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

Его Done.

Другой способ

int resourceId=Resources.getSystem().getIdentifier(pDrawableName, "drawable", "android"); 
+0

его опасно использовать отражение на классе R, релиз сборки Proguard оптимизации будет переименовывать или просто удалить константы. Кроме того, даже если это может сработать, отражение является самой неэффективной операцией в Android. – rupps

1

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

int resource_id=getResources().getIdentifier("thumb"+x, "drawable", getPackageName()); 

если вы находитесь внутри Activity (GetResources/getPackageName являются Activity методов)

, а затем, если вам нужно Drawable

Drawable myDrawable=getResources().getDrawable (resource_id); 

виду, что доступ к вытяжке по имени медленнее, вы не должны злоупотреблять этим встретились корыто.

Смежные вопросы