80,351
社区成员
发帖
与我相关
我的任务
分享
interface IPresenter<V>{.....}
public class BasePresenter<V : IView> : IPresenter<V>{……}
abstract class BaseLoadActivity<P : IPresenter<IView>> : BaseActivity(), IView {……}
interface IPresenter<V>{.....}
public class BasePresenter<V : IView> : IPresenter<V>{……}
abstract class BaseLoadActivity<P : IPresenter<IView>> : BaseActivity(), IView {……}
open class BasePresenter<out V, out T>(view: V, activity: T) : LifeCycleListener {
......
}
BaseActivity:
abstract class BaseActivity<P: BasePresenter<*, *>?> : AppCompatActivity() {
protected var presenter: P? = null
/**
* 生命周期回调函数
*/
private var lifeCycleListener: LifeCycleListener? = null
fun setOnLifeCycleListener(listener: LifeCycleListener) {
lifeCycleListener = listener
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
init()
}
fun onCreate(savedInstanceState: Bundle?, layoutResID: Int) {
super.onCreate(savedInstanceState)
setContentView(layoutResID)
init()
}
/** 初始化部分工具类 */
private fun init() {
if (presenter == null) {
presenter = obtainPresenter()
}
}
protected abstract fun obtainPresenter(): P?
override fun onDestroy() {
super.onDestroy()
lifeCycleListener?.onDestroy()
}
}
业务Presenter:
class LoginPresenter(view: ILoginView, activity: LoginActivity) : BasePresenter<ILoginView, LoginActivity>(view, activity) {
......
}
Activity:
class LoginActivity : BaseActivity<LoginPresenter<LoginActivity>>(), ILoginView{
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
}
override fun obtainPresenter(): LoginPresenter<LoginActivity>? = LoginPresenter(this, this)
}