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()
}
}