package Ġjp . fun make . view sample Ċ Ċ import Ġandroid . content . Context Ċ import Ġorg . jetbrains . ank o . debug Ċ import Ġorg . jetbrains . ank o . default SharedPreferences Ċ import Ġkotlin . properties . ReadWrite Property Ċ import Ġkotlin . reflect . K Property Ċ Ċ // Ġshared _ prefs / jp . fun make . view sample _ preferences . xml Ġãģ« ä¿ĿåŃĺ ãģķãĤĮãĤĭ Ċ // Ġ$ Ġa db Ġshell Ċ // Ġ$ Ġrun - as Ġjp . fun make . view sample Ċ class ĠDefault SharedPreferences ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġkey : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠdefaultValue : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠRead Write Property < Context , ĠInt > Ġ{ ĊĊĠĠĠ Ġprivate Ġfun Ġto Key ( this Ref : ĠContext , Ġproperty : ĠK Property < *> ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġkey Ġ?: Ġ"${ this Ref . java Class . name }.${ property . name }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetValue ( this Ref : ĠContext , Ġproperty : ĠK Property < *> ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis Ref . default SharedPreferences . getInt ( to Key ( this Ref , Ġproperty ), ĠdefaultValue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetValue ( this Ref : ĠContext , Ġproperty : ĠK Property <* >, Ġvalue : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . debug Ġ{ Ġ" setValue ( key =${ to Key ( this Ref , Ġproperty )}, Ġvalue =$ value )" Ġ} ĊĠĠĠĠĠĠĠ Ġthis Ref . default SharedPreferences . edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Int ( to Key ( this Ref , Ġproperty ), Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply () ĊĠĠĠ Ġ} Ċ } Ċ