Используя базу данных ROOM, как получить значение из таблицы без LiveData или без учета LiveData? - PullRequest
0 голосов
/ 16 октября 2019

Я хочу получить целочисленное значение из моей таблицы расходов, которая представляет собой сумму общих расходов (столбец суммы).

В моем классе сущностей расходов

//This is the column Amount which I want the sum of all values in this column and get single integer value total amount
@ColumnInfo(name = "Amount")
private int amount;

public int getAmount() {
    return amount;
}

В моемДао класс здесь это функция, которая дает мне общую сумму через LiveData

@Query("SELECT SUM(Amount) from Expense_table")
LiveData<Integer> getTotalExpenseAmount();

Это из класса репозитория

public LiveData<Integer> getTotalExpenseAmount() {
    return expenseDao.getTotalExpenseAmount();
}

И это из класса ViewModel

public LiveData<Integer> getTotalExpenseAmount() {
    return expenseRepository.getTotalExpenseAmount();
}

Все работает нормально, как и должно быть. Но в моем случае я не хочу получать это через liveData обозреватель, вместо этого я хочу получить само значение этой общей суммы. Там, где мне не нужно снова и снова использовать наблюдателя

expenseViewModel.getTotalExpenseAmount().observe(MainActivity.this, new Observer<Integer>() {
    @Override
    public void onChanged(Integer integer) {
        totalExpense = integer;

        addDataSet();
        Toast.makeText(MainActivity.this, "Total Expense " + totalExpense, Toast.LENGTH_SHORT).show();
    }
});

Я должен получить это значение общей суммы во многих классах, где я не хочу наблюдать это снова и снова. Пожалуйста, скажите мне любой ярлык, чтобы сделать это эффективно. Я буду очень благодарен вам, ребята, если вы решите мою проблему

...