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();
.
- Facebook "Messenger" tiene un SMS Broadcast Receiver que tiene la máxima prioridad después de reiniciar
- SQLite de Android CursorIndexOutOfBounds
- Reproducir sonido mientras se presiona el botón -android
- Preferencias de listas de Android: ¿tiene un resumen como valor seleccionado?
- Cómo agregar fuente de 'Android Private Libraries' a ADT eclipse?
¿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.
- Buck - java.lang.UnsatisfiedLinkError: no pudo encontrar "libjni.so". ¿Cómo resolverlo?
- Deshabilitar haga clic en RecyclerView dentro de un SwipeRefreshLayout
- Google App Engine - escala automática con siempre en instancia?
- Comprobar la integridad de los activos de Android
- Java.net.ConnectException: no se pudo conectar con /192.168.253.3 (puerto 2468): connect failed: ECONNREFUSED (Connection refused)
- ¿Puedo incluir de alguna manera y utilizar varias versiones de una biblioteca .jar determinada?
- Deserializando un tipo genérico con Jackson
- Android Studio: qué configuración del compilador al incluir Google Maps
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");
- Destruye DialogFragment en onCreateDialog ()
- ¿Cómo actualizar el listview cuando hago clic en el botón?