Skip to content

Instantly share code, notes, and snippets.

@pandulapeter
Last active September 19, 2018 01:22
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save pandulapeter/805676fc12445c5b177d53f3770fed9f to your computer and use it in GitHub Desktop.
SharedPrefManager
class SharedPrefManager(context: Context) {
private val preferences = PreferenceManager.getDefaultSharedPreferences(context.applicationContext)
var booleanField by PreferenceFieldDelegate.Boolean("boolean_field")
var intField by PreferenceFieldDelegate.Int("int_field")
var stringField by PreferenceFieldDelegate.String("string_field")
private sealed class PreferenceFieldDelegate<T>(protected val key: kotlin.String) : ReadWriteProperty<SharedPrefManager, T> {
class Boolean(key: kotlin.String) : PreferenceFieldDelegate<kotlin.Boolean>(key) {
override fun getValue(thisRef: SharedPrefManager, property: KProperty<*>) = thisRef.preferences.getBoolean(key, false)
override fun setValue(thisRef: SharedPrefManager, property: KProperty<*>, value: kotlin.Boolean) = thisRef.preferences.edit().putBoolean(key, value).apply()
}
class Int(key: kotlin.String) : PreferenceFieldDelegate<kotlin.Int>(key) {
override fun getValue(thisRef: SharedPrefManager, property: KProperty<*>) = thisRef.preferences.getInt(key, 0)
override fun setValue(thisRef: SharedPrefManager, property: KProperty<*>, value: kotlin.Int) = thisRef.preferences.edit().putInt(key, value).apply()
}
class String(key: kotlin.String) : PreferenceFieldDelegate<kotlin.String>(key) {
override fun getValue(thisRef: SharedPrefManager, property: KProperty<*>) = thisRef.preferences.getString(key, "")
override fun setValue(thisRef: SharedPrefManager, property: KProperty<*>, value: kotlin.String) = thisRef.preferences.edit().putString(key, value).apply()
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment