栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

android MVP模式使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

android MVP模式使用

model 负责数据获取
class ListModel {
    fun getListData(page:Int,listener:ListLoadingListener){
        Handler(Looper.getMainLooper()).postDelayed({
            var arrayList = ArrayList()
            for (item in 1..10){
                arrayList.add(ListBean("pageList=>${item}", "page*item",page.toString()))
            }
            listener.loadSuccess(arrayList)
        },1000)
    }
}

interface ListLoadingListener{
    fun loadSuccess(listData:ArrayList)
    fun loadError()
}
viewI 界面的动作处理
interface ListViewI {
    fun getCurrPage():Int
    fun setCurrPageData(listData:ArrayList)
    fun toRefreshAt()
    fun toUpLoadAt()
}
presenter
class LoginPresenter {
    var iView:LoginView;
    var loginModel:LoginModel;
    
    constructor(iView:LoginView){
        this.iView = iView
        loginModel = LoginModel()
    }

    fun login(){
        loginModel.login(iView.getUserName(),iView.getPassWord(),object :RequestListener{
            override fun requestSuccess(result: String) {
                iView.toMain(result)
            }

            override fun requestError(errStr: String) {
                LogUtil.e(errStr)
            }
        })
    }

}
activity
class ListActivity : baseActivity(), ListViewI {
    private var currNum: Int = 1;
    var pageList = ArrayList();
    private lateinit var listAdapter:ListAdapter
    private lateinit var mListPresenter:ListPresenter
    private lateinit var moreModule: baseLoadMoreModule
    val mThis by lazy { this }
    override fun setLayout(): Int {
        return R.layout.activity_list
    }

    override fun initView() {

        listAdapter = ListAdapter(R.layout.item_list,pageList)
        recyclerView.layoutManager = LinearLayoutManager(this)
        recyclerView.adapter = listAdapter

        refreshLayout.setOnRefreshListener {
            toRefreshAt()
            refreshLayout.isRefreshing = false
        }
        moreModule = listAdapter.loadMoreModule
        moreModule.setOnLoadMoreListener {
            toUpLoadAt()
        }
        listAdapter.setOnItemClickListener { adapter, view, position ->
            Toast.makeText(mThis, "gou bi $position", Toast.LENGTH_SHORT).show()
        }
        mListPresenter = ListPresenter(this)
        mListPresenter.getListData()
    }

    override fun getCurrPage(): Int {
        return currNum
    }

    override fun setCurrPageData(listData:ArrayList)  {
        //        pageList.addAll(listData)
        //刷新界面
        if (currNum==1){
            pageList.clear()
            pageList.addAll(listData)
            listAdapter.notifyDataSetChanged()
        }else{
            listAdapter.addData(listData)
        }
        moreModule.loadMoreComplete()
    }

    override fun toRefreshAt() {
        currNum = 1
        mListPresenter.getListData()
    }

    override fun toUpLoadAt() {
        currNum++
        mListPresenter.getListData()
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/712036.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号