Presenter抽象类
public interface IPresenter<V extends IView> {...}
Presenter基类
public class BasePresenter<V extends IView> implements IPresenter<V> {...}
网络请求基类
package com.qdtec.base.activity;
import com.qdtec.base.contract.IPresenter;
import com.qdtec.base.contract.IView;/**
* Created by Administrator on 2016/9/12.
*/
public abstract class BaseLoadActivity<P extends IPresenter> extends BaseActivity implements IView {
protected P mPresenter;
@Override
protected void initPresenter() {
mPresenter = createPresenter();
if (mPresenter != null)
mPresenter.attach(this);
} protected abstract P createPresenter();
@Override
protected void onDestroy() {
super.onDestroy(); if (mPresenter != null) {
mPresenter.detach();
mPresenter = null;
} } @Override
public void onLowMemory() {
super.onLowMemory();
if (mPresenter != null) mPresenter.compositeSubClear(); }}
实现业务Presenter
public class AddCategoryPresenter extends BasePresenter<AddCategoryContract.View> implements AddCategoryContract.Presenter {}public class AddCategoryActivity extends BaseLoadMoreActivity<AddCategoryPresenter> implements AddCategoryContract.View{}
在转成kotlin时出错
解决方案 »
- [Android]播放Gmail附件中的音樂 Permission Denial
- 各位朋友,本人新手xmlReader.parse(new InputSource(new StringReader(xmlStr)));为何这句执行不了 啊
- android Xmlrpc 服务端建立在模拟器上 异常: Connection refused: connect
- 求思路,求想法!
- 史上最强 最全Android 视频教程 文档 资料 绝对最强
- 请问这个效果如何实现??
- 文件上传
- android的浏览器可以正常和网站交互?
- Android通过WiFI获取地址信息时失败
- 为什么logcat里面很多E/dalvikvm(11257): threadid=11: created from interp,name=Thread-232
- 不知如何处理的错误
- Android Studio gradle问题
BasePresenter: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)
}