android - 为什么是这个列表没有在 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;
}
}
解决方案
推荐阅读
- spring-boot - 杰克逊使用 HATEOAS 时 ZonedDateTime 的反序列化问题
- git - VSCode Flutter - 停止跟踪 Flutter repo 更改
- python - 瓶服务器:删除路线
- discord - 在不和谐中扮演角色
- javascript - React - 道具收到新数据后渲染页面
- python - 比较python中的CSV
- ios - STPCustomerContext 不再声明 selectDefaultCustomerSource
- django - 应用标签覆盖早期的应用标签
- spring - Spring boot H2 database not found & not created by Liquibase
- algorithm - How could I determine the worst case in this code?