Kotlin是一由JetBrains开发可用于现代多平台应用的静态编程语言。
Kotlin可以编译成Java字节码和JavaScript与Java代码相互运作,并可以重复使用如Java集合框架等的现有Java引用的函数。
Kotlin已正式成为Android官方支持开发语言。
所以Kotlin还是要学习一下的,毕竟事程序员吗
Kotlin还是好学的(有java基础的话)
使用ViewModel的和java差不多的
布局如下
中间两个按钮是未使用ViewModel的
下面两个是使用ViewModel的
然后创建新的类
继承ViewModel类(Kotlin继承使用冒号:)
class MyViewModel : ViewModel() {
//对外变量 保证数据安全
val number:LiveData<Int>
//使number获取的值是_number
get() = _number;
//对内变量
//变量初始化方法1 立即初始化
private var _number: MutableLiveData<Int> = MutableLiveData(0)
fun modifyNumber(aNumber:Int){
_number.value = _number.value?.plus(aNumber)
}
//初始化方式2 立刻初始化
// init {
// _number = MutableLiveData()
// _number.value = 0
// }
//初始化方式三 当需要调用时 进行初始化
// private var _number: MutableLiveData<Int> by lazy { MutableLiveData<Int>().also { it.value = 0 } }
}
然后再MainActivity中进行调用就可以了
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var num = 0 //类似与js 可以根据值来判断类型 不需要写分号 写了也不会报错
textView.text = "0" //这里的textView就是在main.xml中textview的id 相当于databing的作用 但是ketlin可以直接调用
buttonPlus.setOnClickListener {//添加点击事件 这里面可以调用函数 也可以自己写多条语句 里面的it就是view
textView.text = (++num).toString();
}
buttonMins.setOnClickListener{
textView.text = (--num).toString();
}
//viewModel的定义和初始化 最新版本不建议使用ViewModelProviders(以后可能删除) 现在使用ViewModelProvider
var viewModel = ViewModelProvider(this).get(MyViewModel::class.java);
//给viewmodel中的number设置观察 当值发生变化时就会更新textview
viewModel.number.observe(this, Observer { textView.text = it.toString() })
buttonVMPlus.setOnClickListener{//加一操作
viewModel.modifyNumber(1)
}
buttonMins.setOnClickListener{//减一操作
viewModel.modifyNumber(-1)
}
}
}