Android 如何使用房间数据库保存字符串列表?

Android 如何使用房间数据库保存字符串列表?,android,android-room,Android,Android Room,我知道如何在房间数据库中保存对象列表。但是我真的不知道如何使用Room保存基本类型的列表,即ArrayList。感谢您的帮助 我知道我可以上这样的课: @Entity public class MyData { @ColumnInfo(name = "data") private String data; public String getData() { return data; } public void set

我知道如何在房间数据库中保存对象列表。但是我真的不知道如何使用Room保存基本类型的列表,即
ArrayList
。感谢您的帮助

我知道我可以上这样的课:

@Entity
public class MyData {
    @ColumnInfo(name = "data")
    private String data;

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }
}

并用常规方法保存数据。但是我认为一定有一种更简单的方法可以使用Room保存简单的数据列表,比如
ArrayList
,因此根据用户ADM在评论中的建议,我决定使用处的解决方案将我的ArrayList转换为字符串,然后使用
SharedReferences
保存它。这似乎是保存
ArrayList
的最简单方法

公共静态ArrayList getPurchasedItems(上下文){
String listOfString=PreferenceManager.GetDefaultSharedReferences(context.getString(“已购买的库存单位”);
返回new Gson().fromJson(listOfString,new TypeToken(){}.getType());
}
公共静态void保存项(上下文上下文、ArrayList purchasedItems){
PreferenceManager.GetDefaultSharedReferences(上下文)
.edit().putString(“购买的sku”,新的Gson().toJson(purchasedItems)).apply();
}

保存字符串列表是什么意思?更具体地说,你想做什么?方法是一样的。使用room,您可以使用
类型转换器
。因此我得出结论,在数据库中保存
ArrayList
并不容易。同样的程序!但将后一种解决方案与
SharedReferences
相结合,我的意思是使用
GSON
SharedReferences
非常简单。谢谢@ADM
public static ArrayList<String> getPurchasedItems(Context context) {
    String listOfString = PreferenceManager.getDefaultSharedPreferences(context).getString("purchased_sku", "");
    return new Gson().fromJson(listOfString, new TypeToken<List<String>>() {}.getType());
}

public static void saveItems(Context context, ArrayList<String> purchasedItems) {
    PreferenceManager.getDefaultSharedPreferences(context)
            .edit().putString("purchased_sku", new Gson().toJson(purchasedItems)).apply();
}