I have assigned the data for variable playState
before fire Code A , but the Code A still get the following error information.
method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter aEPlayState
I think playState
is a LiveData
, the initial value is null, it maybe cause error before I assign the data to it.
How can I fix it? is Code B right?
Code A
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.view.View" />
<import type="androidx.lifecycle.LiveData" />
<import type="info.dodata.voicerecorder.model.EPlayState" />
<variable
name="playState"
type="LiveData<EPlayState>" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageButton
android:id="@+id/btnPlay"
android:layout_width="@dimen/round_button_small"
android:layout_height="@dimen/round_button_small"
app:srcCompat="@drawable/play_play"
app:iamgeForPlayPause="@{playState}"
/>
</LinearLayout>
</layout>
@BindingAdapter("app:iamgeForPlayPause")
fun imageForPlayPause(aImageButton: ImageButton, aEPlayState: EPlayState) {
...
}
enum class EPlayState {
STOPPED,
PLAYING,
PAUSED
}
Code B
<variable
name="playState"
type="LiveData<EPlayState>"
default="EPlayState.STOPPED"
/>
from How can I set default value for data binding in Android Studio?
No comments:
Post a Comment