微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么此List <Double>在Room数据库中没有存储任何数据?

如何解决为什么此List <Double>在Room数据库中没有存储任何数据?

我正在使用数据库中的双精度值来填充图表。我使用List<String>以相同的方式并同时添加项目,因此此列表中也应该有项目。 List<String>中的项目已正确返回,但是List<Double>的大小为0。也许是类型转换器的问题所在?

这是我使用类型转换器将其保存到Room数据库方法Convertors.class

@TypeConverter
    public String fromDoubleArray(List<Double> values) {
        String string = "";
        for(double d : values)
            string += (d + ",");

        return string;
    }

    @TypeConverter
    public List<Double> todoubleArray(String concatenatedStrings) {
        List<Double> doubleList = new ArrayList<>();
        String[] doubleStrings = concatenatedStrings.split(",");
        for (int i=0; i<doubleList.size(); i++) {
            doubleList.add(Double.parseDouble(doubleStrings[i]));
        }

        return doubleList;
    }

这是我添加列表项的方式:

List<Double> balanceHistory = selectedAccount.getBalanceHistory();
balanceHistory.add(newBalance);
selectedAccount.setBalanceHistory(balanceHistory);
accountsviewmodel.update(selectedAccount);

道课:

@Dao
public interface AccountsDao {

    @Insert
    void insert(Account account);

    @Update
    void update(Account account);

    @Delete
    void delete(Account account);

    @Query("SELECT * FROM accounts_table")
    List<Account> getAllAccounts();

    @Query("SELECT * FROM accounts_table")
    LiveData<List<Account>> getAllAccountsLive();

}

帐户类别:

@Entity(tableName = "accounts_table")
public class Account implements Serializable {

    @PrimaryKey(autoGenerate = true)
    private int id;
    private List<Double> balanceHistory;
    //codes...
    
    public Account(.....List<Double> balanceHistory....) {
        this.balanceHistory = balanceHistory;
        //....
    }

    public List<Double> getBalanceHistory() {
        return balanceHistory;
    }

    public void setBalanceHistory(List<Double> balanceHistory) {
        this.balanceHistory = balanceHistory;
    }

    //codes...
}

AccountsDatabase

@Database(entities = {Account.class},version = 2,exportSchema = false)
@TypeConverters(Converters.class)
public abstract class AccountsDatabase extends RoomDatabase {

    private static AccountsDatabase instance;

    public abstract AccountsDao accountsDao();

    public static synchronized AccountsDatabase getInstance(Context context) {
        if (instance == null) {
            instance = Room.databaseBuilder(context.getApplicationContext(),AccountsDatabase.class,"accounts_database")
                    .fallbackToDestructiveMigration()
                    .build();
        }
        return instance;
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。