Android: Data Binding avoid NPE?
2045 ワード
DataBindingとは?
https://developer.android.com/topic/libraries/data-binding
レイアウトのUIコンポーネントをアプリケーションのデータ・ソースに結合できるサポート・ライブラリ.
findViewById
データバインドを簡単に表示すると、上記の利便性がわかりますが、モデルがnullの場合は?バインドする必要があるデータがnullの場合、xmlはnpeを生成しませんか?
スタックオーバーフローではほぼ避けるそうです.
たとえば
userがnullの場合
user.nameはデフォルト(null)
user.ageはデフォルト値(0)(ageはint)
そこでbinding classを確認しましたが、super内側は
公式にも言いたいことがなければ、本当に不安なら演算子で処理できます.
https://developer.android.com/topic/libraries/data-binding
レイアウトのUIコンポーネントをアプリケーションのデータ・ソースに結合できるサポート・ライブラリ.
findViewById
findViewById<TextView>(R.id.sample_text).apply {
text = viewModel.userName
}
data binding<TextView
android:text="@{viewmodel.userName}" />
NPE?データバインドを簡単に表示すると、上記の利便性がわかりますが、モデルがnullの場合は?バインドする必要があるデータがnullの場合、xmlはnpeを生成しませんか?
スタックオーバーフローではほぼ避けるそうです.
Well data binding avoids NullPointerException in general by checking for it and assigns the default value (null for example) even if item itself is null in your example.
Data binding does not need to check for null value, it will be handled by binding class.
生成されたデータバインドコードは、空のポインタ異常を回避するために自動的に空にチェックされます.たとえば
userがnullの場合
user.nameはデフォルト(null)
user.ageはデフォルト値(0)(ageはint)
そこでbinding classを確認しましたが、super内側は
private
なので見えませんが、確かにそうです.公式にも言いたいことがなければ、本当に不安なら演算子で処理できます.
android:text='@{item.title != null ? user.title : ""}'
orandroid:text='@{item.title ?? ""}'
Reference
この問題について(Android: Data Binding avoid NPE?), 我々は、より多くの情報をここで見つけました https://velog.io/@woga1999/Android-Data-Binding-avoid-NPEテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol