2011-03-27 3 views
2

existe-t-il un moyen possible d'itérer à travers R.raw ou R.drawable ou n'importe quelle classe R? Je veux obtenir chaque ID sur ce dossier dynamiquement.Itération À travers la classe R

ArrayList resArray = new ArrayList(); 
foreach(int id : R.raw) { 
resArray.add(id); 
} 

ou existe-t-il un autre moyen?

+0

Je pense que la question est assez ovbious ne l'est pas? désolé si c'est trop court: p – Fugogugo

Répondre

7

Vous pouvez le faire en utilisant la réflexion java:

Class raw = R.raw.class; 
Field[] fields = raw.getFields(); 
for (Field field : fields) { 
    try { 
     Log.i("REFLECTION", 
      String.format("%s is %d", field.getName(), field.getInt(null))); 
    } catch(IllegalAccessException e) { 
     Log.e("REFLECTION", String.format("%s threw IllegalAccessException.", 
      field.getName())); 
    } 
} 
+0

et comment convertir ce champ en int? Je suis désolé, je ne suis pas encore à apprendre Réflexion – Fugogugo

+0

'field.getInt (null)' retourne un 'int' qui est l'identifiant de la ressource. –

+1

Notez que cela est relativement lent, veuillez mettre en cache ces résultats entre les changements de configuration. – CommonsWare

Questions connexes