UnsplashのErolAhmedによる写真
JetBrainsのは、彼らが廃止されますことを明らかにしたときkotlin-android-extensionsのバージョンでは1.4.20-M2の10月2020年バックKotlin Androidの拡張機能が導入されたので、私は、この発表により困惑してkotlinx-syntheicsプラグインだったように、あなたはXMLレイアウトでのビューにアクセスすることができますそれらはプロパティでした。
これは、Android開発用にKotlinに切り替えることがいかに有益であるかを瞬時に示すプラグインの1つでした。その前に、findViewById()変数を手動で呼び出して割り当て、それにアクセスする必要がありViewます。
JetBrainsがそのような最愛の機能を廃止したいのはなぜですか?
開発者を悩ませてきたいくつかの問題がありましたkotlinx-synthetics。
- KotlinがNULL可能でサポートしていますが、にもかかわらず
kotlinx-syntheticsビューはちょうどそれがだことを示していないNULL可能とビューが表示またはアクセスできないとき、実行時にクラッシュしていました。
- IDにグローバル名前空間を使用しているため、同じビューIDで複数のレイアウトを使用している場合。参照しているビューを区別できませんでした。私はあなたを見ている
android:id='@+id/nameTextView'
- Googleは、アプリのアーキテクチャに対してよりモジュール化されたアプローチを推進しており
kotlinx-synthetics、クロスモジュール開発ではうまく機能しません。
実際kotlinx-synthetics、JetBrainsによって導入される前は、の無限の定型文を回避する別の方法がありましたfindViewById()。それはジェイクウォートンの バターナイフライブラリを使用していました。
実際にはアノテーションを使用しており、必要なボイラープレートを舞台裏で生成するため、アノテーションで宣言するだけでビューにアクセスできます。
ビューバインディングがGoogleによって新しく作成されたAndroidJetpackの一部として導入されて以来、それは有望であり、ビューへのデータバインディングのためにどのようにそれを行ったかについて良い点を示しています。
Butter Knifeはライブラリを廃止し、代わりにView Bindingを採用するよう開発者に紹介しているため、公式に承認されています。
重要:このツールは非推奨になりました。バインディングを表示するように切り替えてください。もちろん、既存のバージョンは引き続き機能しますが、AGPと統合するための重大なバグ修正のみが考慮されます。機能開発と一般的なバグ修正は停止しました。
バインディングを表示するために
ビューバインディングは、XMLレイアウトごとにバインディングクラスをシームレスに生成する機能であり、レイアウトID自体を直接参照するインスタンスを作成します。
それは持っているヌルの安全性を、それはビューが画面内に存在するか否かを検出することを意味しています。あなたのコードベースにまだJavaを持っている人のために。ビューバインディングの両方をサポートKotlinとJavaは、一方kotlinx-syntheticKotlin排他的な機能でした。
アプリでビューバインディングを有効にすると、Android Studio 3.6以降に含まれ、この機能を有効にします。で有効にする必要がありますapp/build.gradle。
これをやろう!
さて、これが皆さんが待ち望んでいた部分です。Googleは実際に、Kotlin合成からJetpackビューバインディングへの移行に関する十分に文書化されたガイドを用意しています。
ただし、RecyclerView.Adapterカスタムビューでそれを行う方法に関する追加のガイドもいくつか含めました。
ViewBindingインスタンスを初期化する方法は次のとおりです。
アクティビティ
断片
RecyclerView.Adapter
カスタムビュー(ConstraintLayout)
脚注
ビューバインディングがビューバインディングクラスを生成する方法は、XMLレイアウトに名前を付ける方法によって異なります。
activity_main.xml
fragment_main.xml
item_main.xml
layout_custom_view.xml
ActivityMainBinding
FragmentMainBinding
ItemMainBinding
LayoutCustomViewBinding
実際には、それを支援するためのより簡単な方法があるので、次の記事で説明します。ライブテンプレートを使用してAndroid開発者としての生活を楽にすることができることについてお話します!