也許這有點愚蠢,但我只是堅持這個:我有我的房間數(shù)據(jù)庫 + 實體 + 道。實體有一個名為“成本”的列 - 所以基本上我想總結所有成本(當然,在跟蹤是否有新輸入時,所以檢查總和是否已更改 - 如果是,當然更改值/文本視圖)然后簡單地將帶有 .toString() 的值放入 TextView。我已經(jīng)有一個帶有適配器/視圖模型/存儲庫類的 RecyclerView+CardView(他們只將輸入的名稱放入 CardView)我只是不知道將成本放在哪里 - 我認為我不需要一個新的 ViewModel/Repository 但是我應該把我的 Dao 的 sumAllCost() 方法放在哪里public class SubRepository {private SubDAO mSubDao;private LiveData<List<Sub>> mAllSubs;SubRepository(Application application){ SubDatabase db = SubDatabase.getInstance(application); mSubDao = db.getsubDAO(); mAllSubs = mSubDao.getAllSubs();}public LiveData<List<Sub>> getAllSubs(){ return mAllSubs;}public void insert (Sub sub){ new insertAsyncTask(mSubDao).execute(sub);}private static class insertAsyncTask extends AsyncTask<Sub, Void, Void> { private SubDAO mAsyncTaskDao; insertAsyncTask (SubDAO dao){ mAsyncTaskDao = dao; } @Override protected Void doInBackground(final Sub... params){ mAsyncTaskDao.addSub(params[0]); return null; }}}public class SubViewModel extends AndroidViewModel {private SubRepository mRepository;private LiveData<List<Sub>> mallSubs;public SubViewModel (Application application) { super (application); mRepository = new SubRepository(application); mallSubs = mRepository.getAllSubs();}public LiveData<List<Sub>> getAllSubs(){ return mallSubs;}public void insert (Sub sub){ mRepository.insert(sub);}}
1 回答

函數(shù)式編程
TA貢獻1807條經(jīng)驗 獲得超9個贊
您應該為合成列提供別名(即使沒有它也可以工作,但一般來說,訪問域聚合函數(shù)結果的列名更容易):
SELECT SUM(costs) AS value FROM subscriptions
并且當一個查詢期望返回某些東西void
(什么都沒有)時,它應該是實際返回的數(shù)據(jù)類型;對于貨幣價值,請LiveData
嘗試LiveData<BigDecimal>
。該文檔還有一個相關示例,可能會更詳細地解釋它。
添加回答
舉報
0/150
提交
取消