为了账号安全,请及时绑定邮箱和手机立即绑定

保存数组列表<类>作为房间内的字符串

保存数组列表<类>作为房间内的字符串

慕工程0101907 2022-09-22 19:44:27

我正在使用喷气背包中的房间库,我想将我的数组列表保存在房间数据库中。


我正在使用类型转换器将数组列表转换为字符串,但仍然收到错误。


Error Message : Cannot figure out how to save this field into database. You can consider adding a type converter for it.

这是我的类型转换器。


public class TypeConverterUtils {

    @TypeConverter

    public static String fromArray(ArrayList<CropData> arrayList) {

        return GsonUtils.toGson(arrayList);

    }

}

这是我的数据库类。


@TypeConverters({TypeConverterUtils.class})

public abstract class CheruvuDatabase extends RoomDatabase {


    private static final String DATABASE_NAME = "Cheruvu.db";


    public abstract OtpDAO otpDAO();


    public abstract FarmerInfoDAO farmerInfoDAO();


    // For Singleton instantiation

    private static final Object LOCK = new Object();

    private static volatile CheruvuDatabase sInstance;


    public static CheruvuDatabase getInstance(Context context) {

        if (sInstance == null) {

            synchronized (LOCK) {

                if (sInstance == null) {

                    context.getApplicationContext().deleteDatabase(CheruvuDatabase.DATABASE_NAME);

                    sInstance = Room.databaseBuilder(context.getApplicationContext(), CheruvuDatabase.class, CheruvuDatabase.DATABASE_NAME)

                            .fallbackToDestructiveMigration()

                            .allowMainThreadQueries()

                            .build();

                }

            }

        }

        return sInstance;

    }

}

我想存储这个数组列表。


私有数组列表裁剪数据 = 新的数组列表<>();


这是我的作物数据类。


public class CropData {


    private String cropName;

    private Crop crop;

    private Float cropAcres;

    private Float cropYield;

    private Float cropPrice;


    public String getCropName() {

        return cropName;

    }


    public void setCropName(String cropName) {

        this.cropName = cropName;

    }


    public Crop getCrop() {

        return crop;

    }



查看完整描述

1 回答

?
守候你守候我

TA贡献1463条经验 获得超10个赞

您是否在数组列表变量上添加了@Embedded?因为您将需要嵌入要转换的类。


例如


ArrayList<CropData> cropData;

和作物数据.class是不同的。所以只需添加


@Embedded 

ArrayList<CropData> cropData;

你的问题就会得到解决。


查看完整回答
反对 回复 4天前

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信