読者です 読者をやめる 読者になる 読者になる

Takuji->find;

株式会社はてなでアプリケーションエンジニアやってます、技術的な記事を書いているつもり

Koreference 1.0.0をリリースしました

Koreference 1.0.0を昨日jCenterにリリースしました。

今回のバージョンでKotlin1.0.0-betaに対応しています。

簡単にKoreferenceの紹介を。

これはなに?

KotlinでAndroidのSharedPreferencesをPropertyとして扱えるライブラリーです。

Kotlin1.0.0-beta対応。

資料はこちら

www.slideshare.net

使い方

READMEを見てね

github.com

仕組み

KoreferenceProperty

ReadWriteProperty(Delegated propertyを使うための基底クラス)の子クラス。

こいつはPreferenceとValueConverterを持つ抽象クラスで、それぞれ実装を持つインターフェースをmix-inすることでSharedPreferencesの操作と、SharedPreferences値/Model値の相互変換を実現している。

Preference

SharedPreferencesの操作を行うインターフェース。

各タイプごとにSharedPreferencesの必要なメソッドを呼び出してset/getするだけ。

このインターフェースは全てKoreference内で定義されているので、実装を書くことはなく用意されているものをmix-inすることになると思う。

ValueConverter

SharedPreferences値とModel値(アプリ側で扱う値)を変換するためのインターフェース。

SharedPreferences -> Model、Model -> SharedPreferencesそれぞれのメソッドが定義されているので、必要に応じて実装する感じ。

KoreferenceではRawValueConverterとGsonConverter(koreference-gson)が用意されている。

独自の変換をしたい場合はこのインターフェースの子インターフェースを作ってやるとよい。

KoreferenceModel

SharedPreferencesを継承した抽象クラス。

Koreference本体の機能を利用するだけなら、SharedPreferencesの実装クラスを作って、SharedPreferencesをDelegateしてやって、その実装クラスにプロパティーを生やせばよいが、一括セットの機能を利用したい、SharedPreferencesのインスタンス取得をよしなにやりたい場合はこのクラスを継承するのが必須。

サンプル

テストコード見てね、そのうちアプリ書いて公開するかも?