Почему этот список не хранит никаких данных в базе данных номеров?

#android #arraylist #type-conversion #android-room

#Android #arraylist #преобразование типов #android-room

Вопрос:

Я использую двойные значения из базы данных для заполнения диаграммы. Я использую List<String> для добавления элементов тем же методом и в то же время, поэтому в этом списке тоже должны быть элементы. Элементы в List<String> сохраненных файлах возвращаются правильно, но List<Double> размер равен 0. Может быть, проблема в преобразователях типов?

Вот как я использую преобразователи типов для сохранения в базе данных номеров: 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:

 @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;
    }
}
  

Комментарии:

1. Добавьте свой класс DAO

2. Где класс Account и конвертеры для него

3. @StanislavBatura только что добавил их тоже