kotlin 封装 基础的activity viewbinding mvp
什么是 Kotlin?
Kotlin 是一种由 JetBrains 开发的静态类型编程语言,旨在解决 Java 语言存在的一些问题并提供更优秀的语言特性和功能。它是一种能够在 Java 虚拟机上运行的编程语言,可以编写 Android 应用程序、服务器端应用程序和其他应用程序。
为什么要封装基础的 Activity?
在 Android 应用开发中,Activity 是应用程序的基本组成部分之一,它提供了用户与应用程序进行交互的界面。但是,当开发大型 Android 应用程序时,一个 activity 可能会变得非常复杂,包含大量的代码和逻辑。为了方便开发和维护,可以将一些共同的逻辑和代码封装到基础的 Activity 中,这样在实际的应用程序中,只需要继承基础的 Activity 就可以使用这些公共逻辑和代码,节省了开发的时间和成本。
什么是 ViewBinding?
ViewBinding 是一种新的功能,是在 Android Studio 中引入的一种特殊的类型安全机制。它通过生成与布局文件对应的绑定类,使得开发者可以在不需要额外处理中间布局类的情况下直接通过绑定类来访问 UI 组件。 
什么是 MVP?
MVP(Model-View-Presenter)是 Android 开发中常用的一种软件架构模式,它是一种派生自经典的 MVC 模式 (Model-View-Controller) 的一种架构模式。MVP 架构模式的目的是在视图逻辑处理和业务逻辑处理之间进行解耦,提高代码的可读性及可复用性。
如何用 Kotlin 实现一个基础的 Activity + ViewBinding + MVP 的封装?
我们可以先创建一个 BaseActivity 类,让其他 Activity 在实现时继承此类,从而获得基础的 Activity 功能。
abstract class BaseActivity<in V: MVPView, T: BasePresenter<V>> : AppCompatActivity(), MVPView {
    private var presenter: T? = null
    protected abstract fun createPresenter(): T
    override fun onCreate(savedInstanceState: Bundle?) {
        Create(savedInstanceState)
        presenter = createPresenter()
        presenter?.attachView(this as V)
    }
    override fun onDestroy() {
        Destroy()
        presenter?.detachView()
    }
}
这个 BaseActivity 是一个抽象类,它有两个泛型参数,分别为 V 和 T,V 代表 View,T 代表 Presenter。
在 BaseActivity 中,我们提供了以下几个方法:
1. createPresenter():创建 Presenter 实例的抽象方法,由子类来实现。
2. onCreate(savedInstanceState: Bundle?):在 Activity 创建时调用,创建 Presenter 并通过 attachView() 方法将 View 与 Presenter 绑定。
3. onDestroy():在 Activity 销毁时调用,通过 detachView() 方法解除 View 和 Presenter 的绑定。编程语言vb是什么
在 createPresenter() 方法中,我们实现了 Presenter 的创建:
protected abstract fun createPresenter(): T
在子类中,需要重写 createPresenter() 方法并返回 Presenter 的实例。
然后,在 View 层中,我们创建一个 MVPView 接口。该接口定义了一些常见的 UI 操作,例如 showLoading()、hideLoading()。
interface MVPView {
    fun showLoading()
    fun hideLoading()
    fun showError(error: String)
}
在 Presenter 层中,我们创建一个 BasePresenter 类。
open class BasePresenter<V : MVPView>{
    var view: V? = null
    fun attachView(view: V){
        this.view = view
    }
    fun detachView() {
        view = null
    }
}
BasePresenter 是一个基础的实现类,其中包含了 attachView() 和 detachView() 两个方法。
在子类 Presenter 中,我们可以继承 BasePresenter 来实现具体的业务逻辑。
最后,我们在 BaseActivity 中集成 ViewBinding。
abstract class BaseBindingActivity<VB: ViewBinding, V: MVPView, T: BasePresenter<V>
> : AppCompatActivity(), MVPView {
    private var presenter: T? = null
    abstract val binding: VB
    protected abstract fun createPresenter(): T

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。