見出し画像

[Android] ViewModel-SavedState-ktx 1.0.0-beta01 をリリースしました

# ViewModel-SavedState-ktx とは

ViewModel-SavedState の SavedStateHandle を隠蔽して Delegated Property で簡単に扱えるようにするライブラリです。

# ViewModel-SavedState-ktx について

# ViewModel-SavedState-ktx 1.0.0-beta01 について

## ライブラリ更新

- `androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01`

## enum サポート

Activity の Intent や Fragment の Bundle に enum を渡して ViewModel で参照できるようになりました。以下のように拡張関数で Intent や Bundle に enum を渡すことができます。

// Intent
intent.putExtraEnum("key", YourEnum.ENUM_VALUE)

// Bundle
bundle.putEnum("key", YourEnum.ENUM_VALUE)

ViewModel では以下のように enum を参照できます。

class YourViewModel(
    savedStateHandle: SavedStateHandle
) : SavedStateViewModel(savedStateHandle) {
    // Property
    var yourEnum: YourEnum by savedStateProperty("key")
    // LiveData
    val yourEnumLiveData: MutableLiveData<YourEnum> by savedStateLiveData("key")
}

## カスタムデリゲートをサポート

シリアライズ/デシリアライズを設定でき、任意の型を保存/復元できます。

class YourViewModel(
    savedStateHandle: SavedStateHandle
) : SavedStateViewModel(savedStateHandle) {
    // Property
    var yourClass: YourClass by savedStateProperty<String, YourClass>({
        Json.parse(YourClass.serializer(), it)
    }, { 
        Json.stringify(YourClass.serializer(), it)
    }, "key")

    // LiveData
    val yourClass: MutableLiveData<YourClass> by savedStateLiveData<String, YourClass>({ 
        Json.parse(YourClass.serializer(), it)
    }, { 
        Json.stringify(YourClass.serializer(), it)
    }, "key")
}

# ViewModel-SavedState-ktx 1.0.0-beta01 はこちら


この記事が気に入ったらサポートをしてみませんか?