Kotlin入门和填坑

今天开始正式开始学习kotlin,并新建了一个项目进行学习,学习编程的路上总会遇到各种坑,所以一一写下来,总结一下留下走过的一些坎坷之路。

1.下载kotlin插件过于缓慢

新建好应用后,可以看到android studio自动为我们往依赖里插入了kotlin插件,心想还是很人性化,赶紧点同步,进度条开始了超级缓慢的下载提示进度.等了几分钟,还是如此.看到下载地址,原来被墙了啊,吓的我连忙把maven地址换成了阿里云的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

build.gradle :buildscript {
repositories {
//替换为这句
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
}
}

allprojects {
repositories {
//替换为这句
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
}
}
google提供的maven地址仍是被墙状态.

2.无法使用findViewById

网上翻了下教程,发现要使用这个方法来获取view饮用:

1
val avatar = findViewById(R.id.appavatar) as ImageView

然而,编译时还是报错了:

Not enough information to infer parameter T in fun <T : View!> findViewById(p0: Int): T! Please specify it explicitly.

stackoverflow了一下,发现要这样写:

1
val avatar = findViewById<ImageView>(R.id.appavatar)

答案里没有解释为什么要这样写,但是像我们推荐了一下插件:

1
apply plugin: 'kotlin-android-extensions'

使用这个插件,我们就可以直接在代码里之内引用view了。

3.使用glide

如果我们在kotlin中使用glide,需要使用

1
2
3
dependencies {
kapt 'com.github.bumptech.glide:compiler:4.0.0'
}

替代项目README中所说的annotationProcessor

4.使用retrofit

在回调的时候,subcribe要使用类似于js的方式:

1
2
3
4
5
6
7
flow.subscribeOn(IoScheduler()).observeOn(AndroidSchedulers.mainThread())
.subscribe({
result ->
recyclerView.setAdapter(MyPhotoRecyclerViewAdapter(activity, result, mListener))
}, { error ->
toast("没有数据")
})