Сначала создайте новый класс:
import android.app.Application;
public class MyApplication extends Application {
private static MyApplication singleton;
public static MyApplication getInstance(){
return singleton;
}
@Override
public void onCreate() {
super.onCreate();
singleton = this;
}
}
Теперь добавьте ссылку на класс вашего приложения в AndroidManifest.xml:
<application ... android:name="com.yourPackageName.application.MyApplication ">
Затем создайте свой enum.Пример перечисления для пола:
public enum Gender {
MALE(0, R.string.male),
FEMALE(1, R.string.female);
private Integer resourceId;
private Integer index;
private static final Map<Integer, Gender> lookupIndex = new HashMap<Integer, Gender>();
private static final Map<Integer, Gender> lookupResourceId = new HashMap<Integer, Gender>();
private static final Map<String, Gender> lookupTranslation = new HashMap<String, Gender>();
static {
for (Gender g : values()) {
lookupIndex.put(g.getIndex(), g);
lookupResourceId.put(g.getResourceId(), g);
lookupTranslation.put(g.toString(), g);
}
}
private Gender(Integer index, Integer displayText) {
this.resourceId = displayText;
this.index = index;
}
public Integer getIndex() {
return this.index;
}
public Integer getResourceId() {
return this.resourceId;
}
public static Gender findByIndex(Integer index) {
return lookupIndex.get(index);
}
public static Gender findByResourceId(Integer id) {
return lookupResourceId.get(id);
}
public static Gender findByTranslationText(String text) {
return lookupTranslation.get(text);
}
@Override
public String toString() {
return MyApplication.getInstance().getResources().getString(this.resourceId);
}}
Теперь вы можете использовать запрошенный шаблон поиска:
// by index
Gender male = Gender.findByIndex(0);
// by translation
String femaleTranslated = context.getResources().getString(R.string.female);
Gender gender = Gender.findByTranslationText(femaleTranslated);
// by id
Gender gender = Gender.findByResourceId(R.string.female);
Выражение особой благодарности - Ахмет Юксектепе