2013-07-10 23 views
0

我想在我的Android應用程序中使用數據訪問對象和觀察者模式。該應用程序顯示用戶在某一天吃過的餐食列表和卡路里。用戶可以從列表中刪除該項目。關於數據訪問對象和觀察者模式的混淆

的代碼是這樣的:

  • Activity類使用的方法在進餐數據訪問對象返回列表存儲在餐正餐和熱量List<Meal> = MealDAO.getAllMeals();

  • 列表型號:mealModel.setMealsList(mealList)

  • 的膳食模式是Observable並傳遞給ListView適配器這是一個Observer

  • 當用戶從listView中刪除用餐時,活動使用DAO方法從數據庫中刪除用餐。 MealDAO.remove(3);

  • 該活動然後重置模型中的列表,該列表調用notifyObservers並更新適配器。

    //後缺失

    newMealList = MealDAO.getAllMeals();

    mealModel.setMealList(newMealList);

我不確定這是做這件事的好方法,因爲我必須重置mealModel中的列表。有沒有更好的方法來做到這一點,或者這是好嗎?

回答

0

您的看法不應直接與DAO交談。

我的東西代替MealDAO.remove(3);MealDAO.removeById(idOfMeal);

您將需要從ListView與已去除之前存在那裏的列表中刪除吃飯,然後比較列表,找到已刪除的項目。

通過這個項目(甚至更好 - 它的ID),以DAO,並從DB

刪除

你不需要重新設置列表中mealModel如果您確信這是唯一的地方,你在數據庫中修改Meals的狀態。所以它更安全地重置它。