最近在学习一点Kotlin相关的知识,发现Kotlin在编写Android应用上具有得天独厚的优势,也难怪Google会将Kotlin作为Android的官方语言。使用Kotlin开发App确实会事半功倍。小伙伴们前期稍微注意一点就会很快入门的,当然我现在也只是一个基本的入门,后面的路还很长很长。也是出于一种学习的姿态,简单编写了一个资讯类的app。稍后会给出这个应用的链接。
学习Kotlin的记录:
(1)Kotlin跟Java有很多相似之处,从Java转向Kotlin是一件比较容易的事,Koltin遵循Java中的类的一些基本概念。
我们从最基本的说起。Kotlin新建变量类似于Java Script中的变量新建 val a=10 var b=“hello” 这点区别于我们的Java,还有就是kotlin这边不强制使用分号作为结尾。这是Kotlin新建变量注意的地方。
(2)、Kotlin中的方法,Kotlin中方法定义如下:fun method(){} 类似这个样子,这里也是跟java中有点区别的,大家可以自行感悟。
(3)、Kotlin中的继承不再向我们Java中的 extends 关键字,而是使用了 : 比如 class a : b{} 这样,同样实现接口也是这样子来书写。
.....................当然区别还是有很多的,我们下面说一些跟Android相关的吧
(1)、使用Kotlin 就意味着告别了繁琐的findViewbyId,在Kotlin中可以直接以控件的id来进行一些事件。
(2)、Kotlin中已经简化了get跟set一些操作,对于java中的bean类,Kotlin可以如下书写bean类:
package com.ekwing.jianwenapp.bean
import java.io.Serializable
class NewData : Serializable {
var reason: String? = null
var result: ResultBean? = null
var error_code: Int = 0
class ResultBean : Serializable {
var stat: String? = null
var data: List<DataBean>? = null
class DataBean : Serializable {
var uniquekey: String? = null
var title: String? = null
var date: String? = null
var category: String? = null
var author_name: String? = null
var url: String? = null
var thumbnail_pic_s: String? = null
var thumbnail_pic_s02: String? = null
var thumbnail_pic_s03: String? = null
}
}
}
(3)、Kotlin里的点击事件也相较于java变得简洁起来,我们看下代码:
override fun onClick(v: View?) {
when (v!!.id) {
android.R.id.home -> draw_layout.openDrawer(Gravity.RIGHT)
}
}
(4)、Kotlin里设置适配器
rv_list.layoutManager = GridLayoutManager(this, 2)
rv_list.adapter = MyRecyclerViewAdapter(
this,
dataNews.result!!.data as ArrayList<NewData.ResultBean.DataBean>
)
(rv_list.adapter as MyRecyclerViewAdapter).notifyDataSetChanged()
(5)、Kotlin里的接口回调
sendOkHttpRequest(url, object : Callback {
override fun onFailure(call: Call, e: IOException) {
}
override fun onResponse(call: Call, response: Response) {
val mGson = Gson()
dataNews =
mGson.fromJson<NewData>(
response.body()?.string(),
object : TypeToken<NewData>() {
}.type
)
(6)、Kotlin里的数据传递
val intent =Intent(context,Main2Activity::class.java)
intent.putExtra("title", alist[position].title)
intent.putExtra("image", alist[position].thumbnail_pic_s)
intent.putExtra("url", alist[position].url)
context.startActivity(intent)
val title = intent.getStringExtra("title")
val image = intent.getStringExtra("image")
val content = intent.getStringExtra("url")
(7)、Kotlin里的静态方法
class HttpClient {
companion object{
fun sendOkHttpRequest( url : String,callback: okhttp3.Callback){
val okHttpClient=OkHttpClient()
val request = Request.Builder()
.url(url)
.build()
okHttpClient.newCall(request).enqueue(callback)
}
}
}
好吧,我自己也不知所云,那就看看做的小demo吧
上几个截图: