meine Frage ist, wieWie in RoomDatabase Arraylist mit Enum speichern
List<Enum>
in RoomDatabase zu speichern, so weit ich keine Antwort darauf finden.
meine Frage ist, wieWie in RoomDatabase Arraylist mit Enum speichern
List<Enum>
in RoomDatabase zu speichern, so weit ich keine Antwort darauf finden.
Enum:
public enum HelloEnum {
A,
B,
C
}
Converter:
public class EnumConverter {
@TypeConverter
public List<HelloEnum> storedStringToEnum(String value) {
List<String> dbValues = Arrays.asList(value.split("\\s*,\\s*"));
List<HelloEnum> enums = new ArrayList<>();
for (String s: dbValues)
enums.add(HelloEnum.valueOf(s));
return enums;
}
@TypeConverter
public String languagesToStoredString(List<HelloEnum> cl) {
String value = "";
for (HelloEnum lang : cl)
value += lang.name() + ",";
return value;
}
}
In Bezug auf das Einfügen und Ihre Daten zu holen Dies wird funktionieren, keine Fragen gestellt.
Ich würde jedoch darauf hinweisen, dass die Filterung durch enum ein wenig komplizierter wird. Wenn Sie beispielsweise eine Abfrage zum Abrufen von Objekten erstellen möchten, die enum.A und enum.B enthalten, müssen Sie eine Abfrage erstellen, die ein Zeichenfolgenobjekt für sie abfragt. In diesem Fall "SELECT * FROM pojo WHERE enums enthält" A "und" B ". Daher ist es besser, Ihren enums Zahlenwerte zuzuordnen (wie @Kuffs Antwortdetails), da das Analysieren von Ints wahrscheinlich weniger Probleme verursacht als Parsen Saiten.
Hope this löst Ihr Problem. Fühlen Sie sich frei, alle Fragen im Kommentarbereich zu fragen, und glücklich Jagd!
Serialisieren Sie Ihre Enums in Ganzzahlen und speichern Sie diese stattdessen.
Beim Abrufen der Werte den umgekehrten Vorgang ausführen.
Beide Operationen sind in meiner Antwort auf diese Frage erklärt:
Ok mit Kotlin ist viel einfacher, wenn name
class EnumTypeConverter {
@TypeConverter
fun restoreEnum(enumName: String): EnumType = EnumType.valueOf(enumName)
@TypeConverter
fun saveEnumToString(enumType: EnumType) = enumType.name
}
mit würde ich schlage vor, "android-room" als Tag zu deiner Frage hinzuzufügen. –
Ich konnte es vorher nicht finden;), danke – murt
Ich habe gepostet meine Antwort auf die Frage, löst es das Problem? Wenn nicht, bitte kommentieren Sie, was Sie brauchen. –