activity(首先生成MVP)V层
package com.example.mvpapplication.view.act
import android.os.Bundle
import android.os.PersistableBundle
import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.mvpapplication.Myadapter
import com.example.mvpapplication.R
import com.example.mvpapplication.beans.Data
import com.example.mvpapplication.beans.Mvpface
import com.example.mvpapplication.contract.MainContract
import com.example.mvpapplication.presenter.MainPresenter
import kotlinx.android.synthetic.main.activity_main.*
import mvp.ljb.kt.act.BaseMvpActivity
class MainActivity : BaseMvpActivity<MainContract.IPresenter>() , MainContract.IView {
override fun registerPresenter() = MainPresenter::class.java
override fun getLayoutId(): Int {
return R.layout.activity_main
}
override fun initView() {
super.initView()
btn_getdata.setOnClickListener {
getPresenter().getfood("1", "20", "1")
}
}
override fun filldata(data: List<Data>) {
showToast("${data.size}")
recy.layoutManager=LinearLayoutManager(this)
val myadapter = Myadapter(this,data)
recy.adapter=myadapter
}
}
P层
package com.example.mvpapplication.presenter
import android.util.Log
import com.example.mvpapplication.beans.Data
import com.example.mvpapplication.beans.JSONBean
import com.example.mvpapplication.beans.Mvpface
import mvp.ljb.kt.presenter.BaseMvpPresenter
import com.example.mvpapplication.contract.MainContract
import com.example.mvpapplication.model.MainModel
import io.reactivex.Observer
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
class MainPresenter : BaseMvpPresenter<MainContract.IView, MainContract.IModel>(), MainContract.IPresenter{
override fun getfood(stage_id: String, limit: String, page: String){
val getdata = getModel().getdata(stage_id, limit, page)
getdata.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(object : Observer<JSONBean>{
override fun onComplete() {
}
override fun onSubscribe(d: Disposable) {
}
override fun onNext(t: JSONBean) {
if (t.ret==1){
getMvpView().filldata(t.data)
Log.e("---","成功"+t.data.size)
}else{
}
}
override fun onError(e: Throwable) {
Log.e("---", "失败")
}
})
}
override fun registerModel() = MainModel::class.java
}
M层
package com.example.mvpapplication.model
import com.example.mvpapplication.beans.JSONBean
import com.example.mvpapplication.contract.MainContract
import com.example.mvpapplication.netService.APIService
import com.lzy.okgo.OkGo
import com.lzy.okgo.callback.StringCallback
import com.lzy.okgo.model.Response
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import mvp.ljb.kt.model.BaseModel
import net.ljb.kt.client.HttpClient
class MainModel : BaseModel(), MainContract.IModel {
override fun getdata(stage_id: String, limit: String, page: String): Observable<JSONBean> {
return HttpClient.getRetrofit().create(APIService::class.java)
.getFood(stage_id,limit,page)
}
var s="http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1"
}
rxjava的接口
package com.example.mvpapplication.netService
import com.example.mvpapplication.beans.JSONBean
import io.reactivex.Observable
import retrofit2.http.GET
import retrofit2.http.Query
interface APIService {
@GET("/ios/cf/dish_list.php?")
fun getFood(@Query("stage_id") stage_id:String,@Query("limit")limit :String,@Query("page") page:String):Observable<JSONBean>
}
创建Application初始化retrofit
package com.example.mvpapplication
import android.app.Application
import net.ljb.kt.HttpConfig
class App: Application() {
override fun onCreate() {
super.onCreate()
HttpConfig.setBaseUrl("http://www.qubaobei.com")
}
}
创建Bean类创建适配器使用