android怎么使用3倍图,让你的代码量减少3倍!使用kotlin开发Android(三) 缩短五倍的Java Bean...

回顾一下

哈,没想到你已经坚持不懈看到第三篇了,不错哈~坚持就是胜利。

本文同步自博主的私人博客wing的地方酒馆

在上一篇文章中,我们介绍了扩展函数,这里对上一篇进行一点小小的补充。

还记得textview是如何setText()的吗

textView.text = "hello kotlin"复制代码

不知道你有没有想过,这个.text是如何实现的呢。 哈哈,其实你们大概已经猜到了。就是通过扩展函数实现的

public var TextView.text: CharSequence

get()= getText()

set(v) = setText(v)复制代码

开始今天的内容

今天介绍的是一种叫做数据类的类,他没有什么功能,只负责储存数据,也就是我们常说的Java Bean,通常,在Java语言里,我们定义一个实体,是这样的

public class User{

private String name;

private String id;

public User(String name, String id){

this.name = name;

this.id = id;

}

public String getName(){

return name;

}

public void setName(String name){

this.name = name;

}

public String getId(){

return id;

}

public void setId(String id){

this.id = id;

}

}复制代码

可以看到,仅仅两个属性,加上getter setter有这么多代码。那么kotlin是什么样子呢?

data class User(var name: String, var id: String)复制代码

你不要说我了个擦,这确实是全部代码。。没有少东西了。可以看到语法,括号里跟着参数,也是一种构造器。并且不用getter setter。

使用的时候正常使用就可以了。

val user = User("wing","222")

user.id = "300"复制代码

这里提到一点,var 和val的区别。var一般是变量,val一般是常亮,即不可变量,也多用于只是用一次的变量。

这里你可能有疑问了,如果构造器是单参或者空参的呢? 语法如下:

class User{

var name: String? = null

var id: String? = null

constructor(name: String){

this.name = name

}

constructor(name: String, id: String) {

this.name = name

this.id = id

}

}复制代码

举个栗子

接下来以一个点击按钮,传递数据类向下一个Activity为栗子,把之前的知识应用一下。

首先,新建一个SecondActivity,提供一个静态方法,用于Activity的转跳。想必大家都知道这样的好处,就是让调用者不必看源码就知道需要什么参数。如果你按照java写,就会发现没有static这个关键字!不要慌,这里可以使用 伴生对象 来实现。伴生对象是伴随这个类声明周期的对象~下面看详细用法。

class SecondActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_second)

toast(intent.getStringExtra(USER))

}

//创建一个伴生对象

companion object{

//extra的key

val USER = "USER"

fun startActivity(context: Context,user:User ){

val intent = Intent(context,SecondActivity::class.java)

intent.putExtra(USER,user)

context.startActivity(intent)

}

}

}复制代码

在第一个Activity中,给按钮设置监听器,同时转跳到第二个Activity并且传递User对象。

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

button.setOnClickListener {

val user = User("name")

user.id = "100"

SecondActivity.startActivity(this,user)

}

}

}复制代码

大功告成了!接下来运行下apk,看看第二个Activity成功接收到了传递的User(对了别忘了把User序列化).

对比一下,嗯哼?比Java少了多少? 有没有很爽啊哈。

本文这就结束了(嫌文字太短?不要急啦,先去动手实践下咯。。系列文章,既然挖了坑,就不会拖更的(吧..))

欢迎加入Kotlin小乐园群:479109923

如果你是Android开发者,那么你还可以来 wing的酒馆:425983695

来分享你的开发经验哦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值