我刚刚实现了离线数据保存的空间.但在实体类中,我得到以下错误:

Error:(27, 30) error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.

课程安排如下:

@Entity(tableName = "firstPageData")
public class MainActivityData {

    @PrimaryKey
    private String userId;

    @ColumnInfo(name = "item1_id")
    private String itemOneId;

    @ColumnInfo(name = "item2_id")
    private String itemTwoId;

    // THIS IS CAUSING THE ERROR... BASICALLY IT ISN'T READING ARRAYS
    @ColumnInfo(name = "mylist_array")
    private ArrayList<MyListItems> myListItems;

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public ArrayList<MyListItems> getMyListItems() {
        return myListItems;
    }

    public void setCheckListItems(ArrayList<MyListItems> myListItems) {
        this.myListItems = myListItems;
    }

}

所以基本上我想把ArrayList保存在数据库中,但我找不到任何与之相关的东西.你能告诉我如何使用房间保存数组吗?

注意:MyListItems Pojo类包含2个字符串(截至目前)

提前谢谢.

推荐答案

选项1:让MyListItems成为@Entity,就像MainActivityData一样.MyListItems会让@ForeignKey回到MainActivityData.但是,在这种情况下,MainActivityData不能有private ArrayList<MyListItems> myListItems,就像在Room中一样,实体不引用其他实体.不过,视图模型或类似的POJO struct 可以具有MainActivityData及其关联的ArrayList<MyListItems>.

选项#2:设置一对@TypeConverter个方法,将ArrayList<MyListItems>转换为一些基本类型(例如,a String,例如使用JSON作为存储格式).现在,MainActivityData可以直接使用ArrayList<MyListItems>.然而,MyListItems将没有单独的表,因此您无法很好地查询MyListItems.

Android相关问答推荐

未解析的引用:背景 colored颜色

Jetpack Compose-如何使用值动画直接控制其他动画

为什么当我在装有Firebase的安卓系统中登录苹果时,收到的邮箱为空?

如何在Android中打印到命令行

在Delphi中使用OpenCV for Android在使用JLIST时抛出错误

Lateinit变量结果始终以kotlin格式未初始化

找不到com.android.tools.build:gradle:8.0

android crashlytics 显示崩溃但不显示我的课程中的位置

在本地通知中设置自定义声音

从 HiltViewModel @Injection 访问 Application()

setContentView() 方法的签名

如何在没有人窃取令牌的情况下使用我的移动应用程序中的 API

安卓模拟器打不开

如何在 React Native 中调试网络响应

如何将可重用的 ExtendedFloatingActionButton 与可重用的脚手架链接起来

当包含可绘制对象的整数变量传递给 painterResource 函数时,为什么图像不在 Android Studio 中呈现?

从 Firebase 云存储中获取照片会导致 Android Jetpack Compose 闪烁

如何从 Jetpack Compose 中的 Radio 组中获取价值

Jetpack 组合和片段

CenterAlignedTopAppBar 滚动行为:未为参数状态传递值