kotlin重构任务--遇到的问题

mac2025-10-12  10

掌握基础的知识点,不必深入,随着项目遇到的问题再深入理解对应知识点

有些地方照样可以用java,比如依赖库

转成kotlin代码,还需要要人工重构的点
碰到的问题

转成kotlin代码,还需要要人工重构的点
findviewbyid 代码协程重构Rxjava等引入线程部分的代码
碰到的问题

在哪里可以体现greendao 可以支持kotlin版本。 不必修改,依赖库不需修改成kotlin版本,kotlin可以共存 https://github.com/greenrobot/greenDAO

配置 项目build.gradle

// 注意apply plugin不能定义在基础module中 apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-android-extensions: $kotlin_version" kapt { generateStubs = true }

模块的build.gradle

这个怎么转 (BaseListFragment)

解决方式 兼容解决

mQuickAdapter.setNewData(datas as List<Nothing>?) mQuickAdapter.addData(datas as Collection<Nothing>) findviewbyid val view = root.findViewById(R.id.view_pwd) root.findViewById(R.id.et_newpwd) 前者为啥有泛型,不能直接通过anko来获取?

XEditText 也不行

Kotlin之Fragment中直接引用视图控件id https://blog.csdn.net/wxx_csdn/article/details/78261903

lateinit var 和var 区别 https://www.jianshu.com/p/09ca7483c30dKotlin-Not enough information to infer parameter T in fun<T:View> findViewById(id: Int): T! T 为对应的控件 holder.btnInstall = convertView.findViewById(R.id.btn_install) as T 改为 holder.btnInstall = convertView.findViewById<T>(R.id.btn_install)

Nothing的用途 ??https://blog.csdn.net/ldxlz224/article/details/94403626

集合 https://kymjs.com/code/2017/06/06/01/

解决协程封装回调的那些过程 解决点suspendCoroutine 通过 co.resume

CoroutineScope(Dispatchers.Main).launch { var respPkt = async(Dispatchers.IO) { suspendCoroutine<T> { co -> val req // 请求体组装 TODO // 发送请求登录 ApiUtil.getAsyncClient().action(req, object : AsyncMethodCallback<nyUserServ.AsyncClient.action_call> { override fun onComplete(response: nyUserServ.AsyncClient.action_call) { // 解析数据,TODO if (正确) { co.resume(respPkt) // 把最终结果返回 ,相当于rxjava 中 emitter.onNext(respPkt); } else{ } } override fun onError(exception: Exception) { // 异常处理 co.resumeWithException(exception) } }) } }.await() // respPkt 其实就是 onComplete返回的对象respPkt // 正确返回的话要走的逻辑 TODO }
最新回复(0)