模型和视图适配器之间的Android模型 - 视图 - 展示器中的冗余

时间:2017-06-09 01:06:39

标签: android

如果我们查看Google针对Model-View-Presenter(MVP)的Android架构示例,尤其是这两行:

https://github.com/googlesamples/android-architecture/blob/todo-mvp/todoapp/app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksFragment.java#L357

https://github.com/googlesamples/android-architecture/blob/todo-mvp/todoapp/app/src/main/java/com/example/android/architecture/blueprints/todoapp/data/source/TasksRepository.java#L50

我们看到任务集合是多余的 - 一个存储在模型中的Map中,一个存储在View的适配器中作为列表。

这是必要的吗?是否可以将列表存储一次,或者我们是否必须始终复制Model和View的Adapter之间的列表?如果它只需要存储在一个地方,显然应该在Model / repository部分中。

最重要的是,如果没有必要复制对象列表,那么实现如何不重复它?

2 个答案:

答案 0 :(得分:1)

无论给定的示例是否使用它,我都可以在模型的存储库中创建一个集合,然后通过对View Fragment适配器中的集合的引用来访问该集合。因此,不需要重复 - 集合位于模型的存储库中,即对集合之外的集合的引用。

答案 1 :(得分:0)

我目前也遇到同样的问题。我的方法就像你一样,I。E.在适配器中存储lia的引用而不是使用新的引用,因为如果需要,很容易对列表进行修改。需要注意的一点是,不要修改另一个线程中的列表,也不要在没有notifydatasetchanged的情况下修改列表。