通过使用ROOM数据库,如何在没有LiveData或不观察LiveData的情况下从表中获取值?

时间:2019-10-16 17:58:08

标签: android android-room android-livedata

我想从我的费用表中获得一个整数值,该值是费用(金额列)总费用的总和。

在我的费用实体类中

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

在我的Dao课堂上,是通过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();
    }
});

在许多我不想一次又一次地观察到的类中,我必须获得该总计值。请告诉我有效执行此操作的捷径。 如果您解决了我的问题,我将非常感谢你们

0 个答案:

没有答案