Kotlin-Learning Day 8
简化Share Preferences用法
在此之前先回顾一下Share Preferences的传统用法
{
val editor = getSharePreferences("data",0).edit()
editor.apply{
putString("name","Tom")
putInt("age",18)
putInt("length",18)
}
editor.apply()
}
基本顺序是
- 调用getSharePerferences的edit()方法获取SharePerferences.Editor对象
- 往里面添加数据
- 使用apply方法提交
用高阶函数来做,可以做的更好
fun SharedPreferences.open(block:SharedPreferences.Editor.()->Unit){
val editor = edit()
editor.block()
editor.apply()
}
open是扩展函数,接收一个函数类型的参数,这个函数类型是SharedPreferences.Editor类型的,在函数内是block。
在open函数内拥有SharePreferences的上下文,可以直接调用edit()方法。
实现好后,就可以直接使用了,非常方便。
getSharedPreferences("data",Context.MODE_PRIVATE).open{
putString("name","Tom")
putInt("age",18)
putInt("length",18)
}
最后有个好消息是,其实Google提供的KTX扩展库已经包含了上述用法。
因此实际上我们可以直接这么写
getSharedPreferences("data",Context.MODE_PRIVATE).edit{
putString("name","Tom")
putInt("age",18)
putInt("length",18)
}
只是将open换成edit就可以。
简化Content Values
在KTX库中,Android提供了contentValuesof()方法,可以像mapof一样插入数据。
val values1 = contentValuesOf("name" to "Game of Thrones","author" to "George Martin","pages" to 720,"price" to 20.85)