Android Room Database: Wie geht man mit Arraylist in einer Entität um?

7

Ich habe gerade Raum für die Offline-Datenspeicherung implementiert. Aber in einer Entity-Klasse erhalte ich den folgenden Fehler:

%Vor%

Und die Klasse ist wie folgt:

%Vor%

Im Grunde möchte ich die ArrayList in der Datenbank speichern, aber ich konnte nichts Relevantes finden. Können Sie mir helfen, ein Array mit Room zu speichern?

HINWEIS: MyListItems Pojo Klasse enthält 2 Strings (ab sofort)

Vielen Dank im Voraus.

    
Tushar Gogna 08.07.2017, 13:14
quelle

3 Antworten

10

Option # 1: Haben MyListItems eine @Entity , wie MainActivityData ist. MyListItems würde ein @ForeignKey zurück auf MainActivityData einrichten. In diesem Fall kann MainActivityData jedoch nicht private ArrayList<MyListItems> myListItems enthalten, da Entitäten in Room nicht auf andere Entitäten verweisen. Ein View-Modell oder ein ähnliches POJO-Konstrukt könnte jedoch auch ein MainActivityData und das zugehörige ArrayList<MyListItems> haben.

Option # 2: Richten Sie ein Paar @TypeConverter -Methoden ein, um ArrayList<MyListItems> in und von einem Basistyp zu konvertieren (z. B. String , z. B. durch Verwendung von JSON als Speicherformat). % Co_de% kann jetzt direkt MainActivityData haben. Es wird jedoch keine separate Tabelle für ArrayList<MyListItems> geben, und Sie können daher nicht MyListItems sehr gut abfragen.

    
CommonsWare 08.07.2017, 13:18
quelle
20

Typkonverter wurden speziell dafür entwickelt. In Ihrem Fall können Sie das folgende Code-Snippet verwenden, um Daten in DB zu speichern.

%Vor%

Und erwähne diese Klasse in deiner Raum-DB wie folgt

%Vor%

Weitere Informationen hier

    
Amit Bhandari 13.07.2017 04:24
quelle
0

Hatte die gleiche Fehlermeldung wie oben beschrieben. Ich möchte hinzufügen: Wenn Sie diese Fehlermeldung in einer @Query erhalten, sollten Sie @TypeConverters oberhalb der @Query Annotation hinzufügen.

Beispiel:

%Vor%

....

%Vor%     
40-Love 26.02.2018 03:56
quelle

Tags und Links