AccessPreference - VerstSiu/kotlin_extension GitHub Wiki

API List

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>?>

Usage

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
⚠️ **GitHub.com Fallback** ⚠️