首页 > 解决方案 > 通过使用 ROOM 数据库,如何从没有 LiveData 或没有观察 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();
    }
});

我必须在许多我不想一次又一次地观察到这一点的课程中获得这个总金额值。请告诉我任何有效地做到这一点的捷径。如果你们解决了我的问题,我会非常感谢你们

标签: androidandroid-roomandroid-livedata

解决方案


推荐阅读