android kotlin mvp转化问题

sadcui 2018-01-17 01:00:57

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时出错

...全文
814 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sadcui 2018-02-22
  • 打赏
  • 举报
回复
引用 6 楼 jklwan 的回复:
[quote=引用 5 楼 sadcui 的回复:]

这么改下试试吧

interface IPresenter<V>{.....}

public class BasePresenter<V : IView> : IPresenter<V>{……}

abstract class BaseLoadActivity<P : IPresenter<IView>> : BaseActivity(), IView {……}

[/quote]Presenter在实现的时候不知道怎么弄
sadcui 2018-02-05
  • 打赏
  • 举报
回复
引用 4 楼 jklwan 的回复:
[quote=引用 3 楼 sadcui 的回复:]

看看attach方法怎么转换的[/quote]
jklwan 2018-02-05
  • 打赏
  • 举报
回复
引用 3 楼 sadcui 的回复:
看看attach方法怎么转换的
jklwan 2018-02-05
  • 打赏
  • 举报
回复
引用 5 楼 sadcui 的回复:
这么改下试试吧

interface IPresenter<V>{.....}

public class BasePresenter<V : IView> : IPresenter<V>{……}

abstract class BaseLoadActivity<P : IPresenter<IView>> : BaseActivity(), IView {……}
sadcui 2018-02-02
  • 打赏
  • 举报
回复
引用 1 楼 jklwan 的回复:
转成什么样的代码了,发出来看看,报什么错


头发还没秃a 2018-01-19
  • 打赏
  • 举报
回复
给你看下我的 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)
	
}
jklwan 2018-01-17
  • 打赏
  • 举报
回复
转成什么样的代码了,发出来看看,报什么错

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧