Skip to content

Instantly share code, notes, and snippets.

@Takhion
Created October 13, 2017 07:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Takhion/0895f5a6f88c3e6326501a07f68c0730 to your computer and use it in GitHub Desktop.
Save Takhion/0895f5a6f88c3e6326501a07f68c0730 to your computer and use it in GitHub Desktop.
Shared Preferences Kotlin property delegate with injected provider
import android.app.Activity
import kotlin.reflect.KProperty
interface SharedPreferencesWriter //TODO
interface SharedPreferencesWriterProvider {
val sharedPreferencesWriter: SharedPreferencesWriter
fun <T> prefs() = SharedPreferencesPropertyDelegate<T>()
}
class SharedPreferencesPropertyDelegate<T> {
operator fun getValue(thisRef: SharedPreferencesWriterProvider, property: KProperty<*>): T {
val sp = thisRef.sharedPreferencesWriter
TODO()
}
operator fun setValue(thisRef: SharedPreferencesWriterProvider, property: KProperty<*>, value: T) {
val sp = thisRef.sharedPreferencesWriter
TODO()
}
}
class SampleActivity :
Activity(),
SharedPreferencesWriterProvider {
override val sharedPreferencesWriter: SharedPreferencesWriter
get() = TODO()
val someProperty: String by prefs()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment