2012-02-22 13 views
6

"fr"で始まるドロウアブルフォルダ内の項目の数はどのように数えますか?特定の文字列で始まるドロウアブルフォルダ内の項目をカウントする

背景;私はdrawablesフォルダからランダムなイメージを選ぶためのランダム化を作成したいと思います。それを将来的に証明するために、ランダム化の最大値をピッキングの対象となるアイテムの数に設定したいと考えています。

答えて

10

他のリソースと同様に、ドロアブルは 'R'クラスでアクセスされます。静的整数フィールドを含む静的クラスのコレクションです。反射を使用することとは別に、「すべての描画可能な名前を取得する」という方法はありません(少なくとも私はそれを知らない)。

ランダム化するには、描画可能なIDのリストが必要です。あなたは自動的にリフレクションを使用して、このリストを埋めることができます。

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)); 
     } 
    } 

あなたがその興味ドロワブルのIDのリストを取得するこの方法です。後でこれらのIDを使用することができます。 R.drawable.someResource

+0

素晴らしい! field.get(i)はidを取得し、intは最大値としてfields.size()でランダム化できます。ありがとう!! –

+0

Tomasz、あなたの答えにより、私はhttps://play.google.com/store/apps/details?id=happyworx.nl.Applezと書くことができました。ありがとうございました! –

+0

この回答はまだ最新のものであるか、過去3年間に改善された方法がありますか? – SuperBiasedMan

関連する問題