AccessPreference - VerstSiu/kotlin_extension GitHub Wiki
package com.ijoic.ktx.util.preference
/*
* Preference
*/
abstract class AccessPreference {
protected val innerPrefs: SharedPreferences
fun reset(key: String)
fun clear()
}
/*
* Bind properties
*/
fun AccessPreference.bindInt(
key: String
[, defValue: Int?]
[, getDefault: (() -> Int)?]): ReadWriteProperty<AccessPreference, Int>
fun AccessPreference.bindLong(
key: String
[, defValue: Long?]
[, getDefault: (() -> Long)?]): ReadWriteProperty<AccessPreference, Long>
fun AccessPreference.bindFloat(
key: String
[, defValue: Float?]
[, getDefault: (() -> Float)?]): ReadWriteProperty<AccessPreference, Float>
fun AccessPreference.bindBoolean(
key: String
[, defValue: Boolean?]
[, getDefault: (() -> Boolean)?]): ReadWriteProperty<AccessPreference, Boolean>
fun AccessPreference.bindString(
key: String
[, defValue: String?]
[, getDefault: (() -> String)?]): ReadWriteProperty<AccessPreference, String>
fun AccessPreference.bindStringSet(
key: String
[, defValue: Set<String>?]
[, getDefault: (() -> Set<String>)?]): ReadWriteProperty<AccessPreference, Set<String>>
/*
* Bind optional properties
*/
fun AccessPreference.bindOptionalString(
key: String
[, defValue: String?]
[, getDefault: (() -> String?)?]): ReadWriteProperty<AccessPreference, String?>
fun AccessPreference.bindOptionalStringSet(
key: String
[, defValue: Set<String>?]
[, getDefault: (() -> Set<String>?)?]): ReadWriteProperty<AccessPreference, Set<String>?>
declare custom preference:
class UserPreference(context: Context): AccessPreference(context, "user") {
/**
* Username.
*/
val username by bindOptionalString("username")
/**
* Age.
*/
val age by bindInt("age", 0)
/**
* Gender.
*/
val gender by bindInt("gender", Gender.NONE)
}
access preference:
val prefs = UserPreference(context)
prefs.username = "Tony"
prefs.age = 11
println("username: ${prefs.username}") // username: Tony
println("age: ${prefs.age}") // age: 11