2017-12-14 12 views
1

私は私のアプリで曲リストをキャッシュするには、ソング・リスト構造は、以下のようなものです:Androidでルームを使用してオブジェクト配列を保存する方法は?

@Entity 
public class Songlist { 
     String _id; 
     String desc; 
     List<SongDesc> songWithComment; 
     ..... 

    public static class SongDesc { 
     String comment; 
     Song song; 
    } 
} 
@Entity 
pulbic class Song { 
     String name; 
     String type; 
     ...... 
} 

オペレーティングsqlite3ののlibにはandroid.arch.persistence.roomですが、それは、テーブル内のオブジェクト参照を許可dosen't。 Androidでルームを使用して曲リストをキャッシュする方法はありますか?

+1

あなたは別の '@Entityが必要になります'SongListEntity'、' SongEntity'のようなデータベース構造をモデル化したクラスで、曲は '@ ForeignKey'関係を親に返します。 – CommonsWare

+0

返信ありがとう!曲には数え切れないほどの曲リストが含まれているかもしれませんが、曲リストには限られた曲が含まれています。もし 'SongList'で' @ ForeignKey'を使うべきでしょうか?しかし、私はリストに対処する方法を知らない... – jaime

答えて

0

いくつかの型のArrayListをデータベースに保存する場合は、TypeConverterを使用して、ArrayListをStringのようなより簡単な認識可能な型からデータベースエンジンに変換します。

この参照してください:あなたは、いくつかのカスタムオブジェクトを保存したい場合は、あなたが怒鳴る例のよう@Embeddedアノテーションを使用することができます。また Android Room Database: How to handle Arraylist in an Entity?https://commonsware.com/AndroidArch/previews/room-and-custom-types

1

を:

class Address { 
public String street; 
public String state; 
public String city; 

@ColumnInfo(name = "post_code") 
public int postCode; 
} 


@Entity 
class User { 
@PrimaryKey 
public int id; 

public String firstName; 

@Embedded 
public Address address; 
} 
関連する問題