gpt4 book ai didi

java - Android MVP 我应该在哪里安装 TextWatcher

转载 作者:太空宇宙 更新时间:2023-11-04 10:12:49 25 4
gpt4 key购买 nike

我目前在我的 View 文件 (activity.java) 上实现了 TextWatchers。但是,它们应该在演示者中,因为演示者是在用户输入后决定要做什么的人,还是将它们保留在原处是否明智?

最佳答案

您的问题有两个方面:

  • 一方面,TextWatcher 绝对是 Android UI 的一部分,并且由于 Presenter 不应该了解有关 Android 特定代码的任何信息,因此 Watcher 应该是 View 的一部分
  • 另一方面,TextWatcher 需要处理传入事件并向其应用业务逻辑,并且由于 View 应该尽可能简单,Watcher 应该成为 Presenter 的一部分

要解决此问题,我的建议是将 Watcher 保留在 View 中,但仅将其传入事件重定向到 Presenter:

class TextWatcher(presenter: MVPWatcherInterface) : ParentTextWatcher {

private val presenterInterface: WeakReference<MVPWatcherInterface> = WeakReference(presenter)

override fun onSomeTextEvent(){
presenterInterface.get()?.onWatcherEventSomeTextEvent()
}
}

要实现此功能,您必须定义 MVPWatcherInterface 并在 Presenter 中实现它,并在 View 中创建它时将其传递给 TextWatcher。这使您可以在 Presenter 内的 onWatcherEventSomeTextEvent 中处理所有业务逻辑。

这样代码就干净了,并且根据 MVP 规则进行了分离:)

(作为旁注:我建议的观察程序使用 WeakReference 来保留 MVPWatcherInterface -> 我强烈建议以这种方式实现它,这样您的代码就不会通过防止 Presenter 被垃圾收集而产生任何泄漏)

关于java - Android MVP 我应该在哪里安装 TextWatcher,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52117557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com