搜索
您的当前位置:首页正文

使用Kotlin开发Android项目(二)

来源:二三娱乐
  • 使用Kotlin实现简单访问网络获取数据列表展示

一、变量和属性

在kotlin中integer、float、double、boole等类型仍然存在,但是它们是作为对象存在。它们工作方式与java类似,有些不同之处需要考虑到。

基本类型

  • 数字类型不会自动转型。

    val i :Int=7 val d :Double =i.toDouble()

  • 字符不能直接作为一个数字处理

    val c: Char = 'c' val i: Int = c.toInt()

  • 位运算也有一点不同
    // Java int bitwiseOr = FLAG1 | FLAG2; int bitwiseAnd = FLAG1 & FLAG2;
    // Kotlin val bitwiseOr = FLAG1 or FLAG2 val bitwiseAnd = FLAG1 and FLAG2

  • 字面上可以写明具体的类型。这个不是必须的,但是一个通用的Kotlin实践时省略变量的类型(我们马上就能看到),所以我们可以让编译器自己去推断出具体的类型
    val i = 12 // An Int val iHex = 0x0f // 一个十六进制的Int类型 val l = 3L // A Long val d = 3.5 // A Double val f = 3.5F // A Float

  • 一个String可以像数组那样访问,并且被迭代
    val s = "Example" val c = s[2] // 这是一个字符'a' // 迭代String val s = "Example" for(c in s){ Log.e("",c.toSting) }

  • 变量

变量可以很简单地定义成可变( var )和不可变( val )的变量。这个与Java中使用的 final很相似。但是不可变在Kotlin(和其它很多现代语言)中是一个很重要的概念。

`

val s = "Example" // A String
val i = 23 // An Int
val actionBar = supportActionBar//An ActionBar in an Activity context
`

  • 属性

属性与Java中的字段是相同的,但是更加强大。属性做的事情是字段加上getter加上setter。我们通过一个例子来比较他们的不同之处。这是Java中字段安全访问和修改所需要的代码
public class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } ... Person person = new Person(); person.setName("name"); String name = person.getName();
在Kotlin中,只需要一个属性就可以了:
public class Person { var name: String = "" } ... val person = Person() person.name = "name" val name = person.name

二、Android代码

Kotlin实现RecyclerView效果




  • 执行一个请求

多亏Kotlin非常强大的互操作性,你可以使用任何你想使用的库,比如用Retrofit来执行服务器请求。当只是执行一个简单的API请求,我们可以不使用任何第三方库来简单地实现。而且,如你所见,Kotlin提供了一些扩展函数来让请求变得更简单。首先,我们要创建一个新的Request类:

public class Request(val url: String) { public fun run() { val forecastJsonStr = URL(url).readText() Log.e(javaClass.simpleName, forecastJsonStr) } }

  • 在主线程以外执行请求

Anko提供了非常简单的DSL来处理异步任务,它满足大部分的需求。它提供了一个
基本的 async 函数用于在其它线程执行代码,也可以选择通过调用 uiThread 的
方式回到主线程。在子线程中执行请求如下这么简单:

async() { Request(url).run() uiThread { longToast("Request performed") } }

  • 使用data class封装数据

我们先用postma查看下接口返回json数据

转换json到数据类

要定义一个Command

Top