質問のコメントと次のユーザーには次のように書かれています。最高のソリューションはハッシュテーブルに対応していると思います。
Hashtable<String, Drawable> map=new Hashtable<>(SIZE);
//iterates for each couple key/name - drawable you need
map.put(KEY, drawable);
//then you can access to drawables easily with the name :
Drawable d=map.get(KEY);
すべてのハッシュテーブルの費用はhastableデータ変更にリンクされています、要素の追加要素を更新(と私は更新のためにもわからないんだけど)、要素を削除します。あなたのハッシュは固定されているように見えますが、文字通りコストはかかりません(メモリ使用量を除く)、配列内の位置を指定した場合と同じように、アクセスはほぼ[定数で、サイズは直線ではありません]
私はそれがあなたが必要とする解決策だと思います。 複数のキーを持つドロアブルを作成できますが、問題はありません。しかし、1つのキーは常に1つのドロウアブルにつながります。
map.put();おそらくそれがプリミティブデータである場合を除いて、値(ここではドロウアブル)を複製していません。したがって、変更可能な場合は、ドロアブルの変更は、同じドロアブルを持つすべてのキーに適用されます。これは問題ではないかもしれませんが、他の用途にハッシュテーブルを使用する場合は、そのことを知っておく必要があります。
EDIT: フラグメントごとにこのハッシュテーブルが必要なので、各フラグメントが継承する抽象クラスを作成し、そのクラス内でこのhastableをprotectedとして宣言する必要があります。したがって、各サブクラスはそれを取得できます。また、このハッシュテーブルを非公開にし、hastableからdrawableを取り戻す関数 "Drawable getDrawableFromName(String name)"を実装することもできます。
アクティビティのようなことが必要な場合に備え、アクティビティの抽象メインサブクラスを用意することを強くお勧めします。
なぜアレイを使いたくないのですか?配列や手作業でコード化されたものが配列のように見えない限り、これを行う方法が存在するかどうかはわかりません。たぶんハッシュマップを使用しますか?また、SQLiteを使用して格納することもできますが、最終的には配列のようになり、配列を使用するほうが良いでしょう。 – Feuby
私はdrawableに格納する画像がたくさんあり、配列に格納すると私は各名前の配列をループする必要があり、実行時間が長くなります。 –
ハッシュテーブル(ハッシュマップではありません)を使用すると、低価格で直接名前からdrawableを得ることができます – Feuby