1、根据已存在的db文件生成数据库,AppDataBase写法
@Database(entities = [Bean::class], version = 2)
abstract class AppDatabase : RoomDatabase() {
abstract fun ****dao(): *****Dao
companion object {
val instance by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
Room.databaseBuilder(
ScaffoldConfig.getApplication().applicationContext,
AppDatabase::class.java,
“数据库名称”
).createFromAsset(”db文件名“)
.addMigrations(migration1_2)
.build()
}
private val migration1_2 = object : Migration(1, 2) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("CREATE TABLE IF NOT EXISTS `表名` ( `id` INTEGER PRIMARY KEY NOT NULL, `dateStr` TEXT NOT NULL,`year` INTEGER NOT NULL,`month` INTEGER NOT NULL,`day` INTEGER NOT NULL,`text` TEXT NOT NULL,`content` TEXT NOT NULL)")
}
}
}
}
2、如果有一段操作,在某个时段操作结束后,结束操作有所不同时,可以使用高阶函数。
private fun test1(action: ()->unit) {
.....某些操作.....
action.invoke()
}
//如果需要带返回值的话
private fun test2(action: (返回值类型)->unit) {
...某些操作后,例如请求数据后,得到 List<String>类型的数据...
val list: List<String> = dao.selectAll()
action.invoke(list)
}
//在调用时就可以如下
test1{
//剩余的操作
}
//带返回值如下
test2 { list ->
//对请求到的数据进行操作
}
3、这次遇到的需求是点击图片banner查看详情图并且需要能放大缩小
github上有个很好用的展示图片的类,支持放大缩小:com.luck.picture.lib.photoview.PhotoView