我正在尝试在我的Android应用中使用数据访问对象和观察者模式。该应用程序显示用户在特定日期吃过的餐点列表及其卡路里。用户可以从列表中删除该项目。
代码的工作原理如下:
Activity类使用膳食数据访问对象中的方法返回膳食和卡路里列表List<Meal> = MealDAO.getAllMeals();
该列表存储在膳食模型中:mealModel.setMealsList(mealList)
膳食模型为Observable
,并传递给ListView
Observer
适配器
当用户从listView中删除膳食时,活动使用DAO方法从数据库中删除膳食。 MealDAO.remove(3);
然后,Activity重置模型中的列表,该列表调用notifyObservers并更新适配器。
//删除后
newMealList = MealDAO.getAllMeals();
mealModel.setMealList(newMealList);
我不确定这是一个很好的方法,因为我必须重置mealModel中的列表。有更好的方法可以做到这一点还是没关系?
答案 0 :(得分:1)
您的观点不应直接与DAO对话。
我会用MealDAO.remove(3);
MealDAO.removeById(idOfMeal);
您需要从ListView
中删除膳食,然后将该列表与删除之前存在的列表进行比较,以找到已删除的项目。
将此项目(或更好 - 其ID)传递给DAO,并将其从DB中删除
如果您确定这是修改DB中膳食状态的唯一地方,则您不需要重置mealModel 中的列表。所以重置它会更安全。