我目前在自己的视图文件(activity.java)中实现了TextWatchers
。但是,他们应该在主持人中吗,因为主持人是在用户输入后决定要做什么的人,还是将他们放在原处是明智的选择?
答案 0 :(得分:0)
您的问题有两个方面:
要解决此问题,我的建议是将 Watcher 保留在 View 中,但仅将其传入事件重定向到 Presenter :
class TextWatcher(presenter: MVPWatcherInterface) : ParentTextWatcher {
private val presenterInterface: WeakReference<MVPWatcherInterface> = WeakReference(presenter)
override fun onSomeTextEvent(){
presenterInterface.get()?.onWatcherEventSomeTextEvent()
}
}
要实现此目的,您必须定义 MVPWatcherInterface ,并在 Presenter 中实现它,并在创建时将其传递给 TextWatcher 。 视图。这样,您就可以处理 Presenter 内部的 onWatcherEventSomeTextEvent 内部的所有业务逻辑。
这样,代码就可以按照MVP规则进行清理和分离:)
(作为旁注:我建议的观察者使用 WeakReference 来保持 MVPWatcherInterface ->我强烈建议以这种方式实现它,因此防止 Presenter 被垃圾回收)不会使您的代码产生任何泄漏)