也许这有点愚蠢,但我只是坚持这个:
我有我的房间数据库 + 实体 + 道。
实体有一个名为“成本”的列 - 所以基本上我想总结所有成本(当然,在跟踪是否有新输入时,所以检查总和是否已更改 - 如果是,当然更改值/文本视图)然后简单地将带有 .toString() 的值放入 TextView。
我已经有一个带有适配器/视图模型/存储库类的 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);
}}
函数式编程
相关分类