Android 在ListPreference中使用枚举

Android 在ListPreference中使用枚举,android,enums,android-preferences,listpreference,Android,Enums,Android Preferences,Listpreference,我有一个非常简单的枚举,我在我的性别应用程序中使用,我需要有一个设置页面,用户可以在其中更改它,但我找不到任何方法在ListPreference中使用枚举。我正在使用PreferenceFragment来构建Preferences屏幕,但是我找不到一种方法来使用我拥有的枚举作为ListPreference的条目和入口值。 枚举非常简单,只是 public enum Gender implements EnumSpinner { MALE("Male", 0), FEMALE("Femal

我有一个非常简单的枚举,我在我的性别应用程序中使用,我需要有一个设置页面,用户可以在其中更改它,但我找不到任何方法在ListPreference中使用枚举。我正在使用PreferenceFragment来构建Preferences屏幕,但是我找不到一种方法来使用我拥有的枚举作为ListPreference的条目和入口值。 枚举非常简单,只是

public enum Gender implements EnumSpinner {
  MALE("Male", 0),
  FEMALE("Female", 1),
  NONE("Prefer not to say", -1);

  private static SparceArray<Gender> genderMap = new SparceArray<>();

  static {
    for(Gender gender : Gender.values()) {
      genderMap.put(gender.getValue(), gender);
    }
  }

  private String name;
  private int value;

  Gender(String name, int value) {
    this.name = name;
    this.value = value;
  }

  public static Gender getGender(int val) { return genderMap.get(val); }

  @Override
  public String toString() { return name; }

  public String getName() { return name; }
  public int getValue() { return value; }
}
public enum实现EnumSpinner{
男性(“男性”,0),
女性(“女性”,1),
无(“宁愿不说”,-1);
private static SparceArray genderMap=新SparceArray();
静止的{
for(性别:Gender.values()){
genderMap.put(gender.getValue(),gender);
}
}
私有字符串名称;
私有int值;
性别(字符串名称、int值){
this.name=名称;
这个值=值;
}
公共静态性别getGender(int val){返回genderMap.get(val);}
@凌驾
公共字符串toString(){return name;}
公共字符串getName(){return name;}
public int getValue(){return value;}
}
是否可以在ListPreference中使用,或者我必须在strings.xml文件中创建两个字符串数组并以这种方式使用它


旁注,EnumSpinner只是一个允许我在微调器中使用enum的界面。

请查看谷歌开发者youtube频道,Android性能很重要有一段视频解释了为什么您不希望在Android中使用enum,还有其他方法可以获得相同的功能。 Android有一个设置/首选项框架,你可以在这里找到一个优秀的教程