Die Raumbibliothek erkennt keine TypeConverter
, die ich für List
enums erstellt habe. Wenn ich dies jedoch zu einem ArrayList
von enums ändere, funktioniert es gut. Jeder hat eine Idee warum und was kann ich tun, damit dies mit List
funktioniert? (Die Verwendung von List in Kotlin ist einfacher und ich möchte wirklich nicht aus und wieder nach ArrayList
konvertieren.)
Hier ist mein Code:
Mein Modell:
%Vor% DayOfWeek
ist eine enum:
Mein TypeConverter
:
Und ich habe es in meiner DB-Klasse so eingestellt:
%Vor%Mein DAO sieht so aus:
%Vor%Der Fehler, den ich mit diesem Code erhalte, ist:
%Vor% Wie ich oben sagte, wenn ich die Eigenschaft days
in ArrayList<DayOfWeek>
ändere (und die Änderungen in ArrayList
in DayOfWeekConverter
mache), dann funktioniert alles gut. Wenn mir jemand helfen kann, das herauszufinden und mir zu sagen, wie ich List
hier verwenden kann, wäre es eine große Hilfe, es macht mich verrückt: /.
Aus irgendeinem Grund mag Zimmer nicht Kotlin List
, aber wenn ich List
durch MutableList
ersetzt habe, hat es angefangen zu arbeiten:
Dies ist keine perfekte Lösung, aber ich hoffe, Sie können mehr damit untersuchen.
Außerdem müssen Sie @PrimaryKey
so ändern, dass keine Nullwerte zulässig sind
Wir haben keine Möglichkeit, eine Liste enum ohne Array-Liste zu speichern und zu erhalten. Das Zimmer unterstützt es nicht. Wenn Sie jedoch die Verwendung der Array-Liste vermeiden möchten, können Sie ein Objekt namens ListDayOfWeek erstellen, wobei List ein Attribut ist. Ich habe es ausprobiert und es ist in Ordnung. Wenn Sie Code benötigen, antworten Sie bitte hier. Ich werde es veröffentlichen.
Sie sollten es nicht so in Ihrer Datenbank speichern. Erstellen Sie etwas so und speichern Sie es als int:
%Vor%Schließlich funktioniert Ihr Dienstprogramm, um von / in enum zu konvertieren.
%Vor%Jetzt können Sie entweder einen int speichern und die Wochentage später abrufen:
%Vor%oder du verwendest die Enumeration und schreibst einen passenden Typwandler dafür.
%Vor%Sie können die Enumeration durchlaufen und alle Tage mit
abfragen %Vor%Code ist nicht getestet, weil ich nicht auf meinem Computer bin, aber das sollte das Konzept zeigen, das besser funktioniert als das Speichern einer Enumeration (was nur ein Alias für einen vordefinierten Wert ist!)
Tags und Links android kotlin android-architecture-components android-room