0

我正在尝试在我的 Android 应用程序中使用数据访问对象和观察者模式。该应用程序显示用户在给定日期吃过的饭菜及其卡路里的列表。用户可以从列表中删除该项目。

代码是这样工作的:

  • Activity 类使用膳食数据访问对象中的方法返回膳食和卡路里列表List<Meal> = MealDAO.getAllMeals();

  • 该列表存储在膳食模型中:mealModel.setMealsList(mealList)

  • 膳食模型被Observable传递给ListView适配器,适配器是Observer

  • 当用户从 listView 中删除餐点时,Activity 使用 DAO 方法从数据库中删除餐点。MealDAO.remove(3);

  • Activity 然后重置模型中的列表,该列表调用 notifyObservers 并更新适配器。

    //删除后

    newMealList = MealDAO.getAllMeals();

    mealModel.setMealList(newMealList);

我不确定这是否是一个好方法,因为我必须重置 mealModel 中的列表。有没有更好的方法来做到这一点,或者这样可以吗?

4

1 回答 1

1

您的视图不应直接与 DAO 对话。

我会MealDAO.remove(3);用类似的东西代替MealDAO.removeById(idOfMeal);

您需要从中删除餐点ListView,然后将该列表与删除前存在的列表进行比较,以找到已删除的项目。

将此项目(甚至更好 - 它的 ID)传递给 DAO,并将其从数据库中删除

如果您确定这是您在 DB 中修改 Meals 状态的唯一位置,则无需重置 mealModel 中的列表。所以重置它更安全。

于 2013-07-10T19:21:58.497 回答