Buscar enum etiqueta por valor

Tengo el siguiente enum en mi aplicación java android:

static enum PaymentType { Scheme(0), Topup(1), Normal(2), Free(3), Promotion(4), Discount(5), Partial(6), Refund(7), NoShow(8), Prepay(9), Customer(10), Return(11), Change(12), PettyCash(13), StateTax(14), LocalTax(15), Voucher(16), Membership(17), Gratuity(18), Overpayment(19), PrepayTime(20), HandlingFee(21); private int value; private PaymentType(int i) { value = i; } public int getValue() { return value; } } 

Utilizo este enum alot para descubrir el valor entero de una de estas etiquetas de la secuencia, por ejemplo int i = Lookups.PaymentType.Voucher.getValue(); .

¿Cómo puedo hacer esto al revés? Tengo un valor entero de una base de datos y necesito encontrar qué cadena que corresponde a.

Para pasar de un valor de índice ordinal() a enum:

 type = PaymentType.values()[index]; 

Sin embargo, tenga en cuenta que esto es frágil cuando el ordinal se almacena en cualquier otro lugar, como una base de datos. Si los números de índice cambian, obtendrá resultados no válidos.

Para obtener una tabla de consulta más confiable, utilice un mapa.

Debe hacer algo como esto (el bloque de init estática debe estar al final y en su caso simplemente reemplace "asc" y "desc" con números o agregue cualquier otro campo):

 public enum SortOrder { ASC("asc"), DESC("desc"); private static final HashMap<String, SortOrder> MAP = new HashMap<String, SortOrder>(); private String value; private SortOrder(String value) { this.value = value; } public String getValue() { return this.value; } public static SortOrder getByName(String name) { return MAP.get(name); } static { for (SortOrder field : SortOrder.values()) { MAP.put(field.getValue(), field); } } } 

Después de eso, llame a:

 SortOrder asc = SortOrder.getByName("asc"); 
  • ¿Cómo puedo especificar la serialización con GSON?
  • ¿Cómo conectar automáticamente un WiFi con SSID especificado?
  • Comandos personalizados de Google Now
  • Cliente de chat para android
  • Port iPhone aplicación a Android
  • InputStream - Tratamiento de los cambios de red
  • Google google maps agrega al marcador propia etiqueta
  • Android: Error al cargar la imagen en diferentes versiones de Android
  • Generar Java desde WSDL para usarlo en Android con el cliente SOAP ksoap2-android?
  • Java.lang.RuntimeException: Realizar detener la actividad que no se reanuda en android
  • Formato EditarTexto a moneda con números enteros
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.