MVP和多种行为
我一直在试图做一个简单的记事本应用程序(我的第一个应用程序),使用MVP
和dagger
。 我已经理解了大部分内容,但如果我有多种行为,我会有点失落。我会解释。
我的项目层次结构是这样的: Click hereMVP和多种行为
- MainActivity - Activity类,拥有一个ListView。
- MainPresenter - 接口,保持设置容器的方法,和刷新一个
- MainPresenterImpl - 演示
- 的MainView执行 - 接口,用于在MainActivity(为MVP)
- Note_Container - 包含NoteHandler加载 - 保存笔记,创建/存储适配器,可进行更改
- 忽略noteactivity其空
- 迪的文件夹是依赖注入
- 车型只有把两个STR记类012
- NoteHandler - 包含NoteRepository并在抛出异常时处理异常。
- NoteRepository - 使用gson库保存和加载文件中的注释。
解释了所有这些之后,您应该(可能)已经理解了项目是如何工作的(随意批评层次结构)。
现在我想添加一个创建笔记的按钮。我只是将听众添加到mainactivity
并将其重定向到演示者...
但是,演示者是否会处理代码以添加新音符(开始新的意图等)还是应该创建一个新类独立处理这些东西?
如果我想在将来添加更多的按钮,例如remove-all-notes或启动帮助对话框,我应该为每个按钮设置一个处理代码的类吗?
我该如何组织这样的事情?
导航没有在MVP模式中正式解决。那么,我认为有两个好方法:
1 - 您可以创建一个导航器/路由器来为您处理导航。因此,演示者将所有这些逻辑提供给导航器或...
2 - 您可以处理活动中的屏幕更改。我真的相信屏幕变化是View的责任,所以你只需要将导航命令传递给View。像:
interface MainView{
void navigateToAddCardScreen()
void navigateToLoginScreen()
void navigateSomeScreen()
}
我更喜欢第二个选项。导航器使得代码对我来说太粒...
我希望我能帮到
除了导航之外,从列表中打开已存在的笔记还需要与笔记本电脑(存在于演示者中)进行通信并获取笔记......如何在演示者没有“Android代码”的情况下工作? ? –
您将点击传递给演示者,演示者与Handler交流。然后它将结果传递给View –
好的设置。一个好方法是让演示者委派大部分任务。 onXXClicked在演示者调用视图,控制器或其他类的东西。在这种情况下,在其他地方导航您的应用程序的视图。我会避免在您的演示者中引用上下文(附图中的appart)。 – Frank