kotlin mvvm框架

1..Const(常量池)

/**
 * companion object 伴生对象,类似Java中的静态块static{} ,但是在kotlin中,他的生命周期跟随当前类,其中的内容都是静态的
 * const val代表一个常量,对应Java中的public static final
 */
class Const {
    companion object{
        const val BASE_URL="http://10.161.9.80:7012"
        const val URL_LOGIN="/user/loginjson"
        const val URL_REGISTER=""
        const val PARAM_USERNAME="username"
        const val PARAM_PASSWORD="password"
        const val PARAM_REPASSWORD="repassword"
        const val MAIN_URL="application/json"

    }
}

2.ApiService

interface ApiService {

    @GET(Const.URL_FOOD)
    fun getFoods(): Observable<FoodBeanResult>

    //登录请求
    @POST(Const.URL_LOGIN)
    fun login(@Body body:RequestBody):Observable<LoginBeanResult>
}

3.RetrofitManager(管理类)

class RetrofitManager {
    companion object{
        fun getRetrofit(): Retrofit {
            //Okhttp
            val okHttpClient =OkHttpClient.Builder()
                .readTimeout(30,TimeUnit.SECONDS)
                .writeTimeout(30,TimeUnit.SECONDS)
                .connectTimeout(30,TimeUnit.SECONDS)
                .addInterceptor(HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))


            //Retrofit
            val retrofit=Retrofit.Builder()
                .baseUrl(Const.baseUrl)
                .client(okHttpClient.build())
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())

            return retrofit.build()
        }
    }
}

4.base层

4.1baseRepo/basemodel

/**
 * repo数据仓库,替代model因为在MVVM模式中viewmodel和model的叫法容易冲突,所有用repo代替
 * repository 仓库(全拼)
 * 要想让别的类可以继承当前类,需要在class前加上open或者abstract
 *
 * 主要功能:对外提供apiService,可以直接调用其中的接口请求方法
 */
open class BaseRepo {
    fun getService(): ApiService = RetrofitManager.getRetrofit().create(ApiService::class.java)
}

4.2baseviewmodel

/**
 * BaseViewModel,主要功能继承viewModel,目前没有其他功能
 */

open class BaseViewModel:ViewModel() {
}

4.3baseActivity

abstract class BaseMVVMActivity<VDB: ViewDataBinding> :AppCompatActivity() {
    protected lateinit var dataBinding:VDB

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        //1.绑定视图
        dataBinding= DataBindingUtil.setContentView(this,getLayoutId())
        //2.初始化控件
        initView()
        //3.初始化数据
        initData()
    }

    abstract fun initData()

    abstract fun initView()

    abstract fun getLayoutId(): Int
}

4.4baseFragment

abstract class BaseMVVMFragment<VDB: ViewDataBinding>:Fragment() {
    protected lateinit var dataBinding:VDB
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        dataBinding= DataBindingUtil.inflate(inflater,getLayoutId(),container,false)
        return dataBinding.root
    }

    abstract fun getLayoutId(): Int

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        initView()
        initData()
    }
    abstract fun initData()
    abstract fun initView()
}

Kotlin是一种现代化的、静态类型的编程语言,它运行在Java虚拟机上并且可以与Java代码互操作。MVVM(Model-View-ViewModel)是一种软件架构模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和视图模型(ViewModel)。 在使用Kotlin开发MVVM应用程序时,可以使用以下步骤: 1. 定义模型(Model):模型是应用程序的数据层,它包含了数据的逻辑和操作。你可以使用Kotlin的类和数据类来定义模型,然后实现相应的业务逻辑。 2. 创建视图(View):视图是用户界面的表现层,它负责展示数据和接收用户的输入。在Android开发中,你可以使用XML布局文件定义视图,然后在Kotlin代码中与之进行交互。 3. 实现视图模型(ViewModel):视图模型是连接模型和视图的桥梁,它负责处理视图和模型之间的通信。你可以使用Kotlin的类和接口来定义视图模型,其中包含了处理用户输入、获取数据并更新视图等逻辑。 4. 绑定视图和视图模型:使用数据绑定库或其他框架将视图和视图模型进行绑定,以实现数据的双向绑定和自动更新。 5. 测试和调试:编写单元测试和集成测试来确保应用程序的功能正常,并进行调试以解决可能出现的问题。 使用KotlinMVVM可以使代码更加模块化、可读性更高,并且方便进行代码重用和维护。同时,Kotlin提供了许多方便的语言特性和工具集,使得开发更加高效。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值