DataBinding
「AndroidロボットはGoogleが作成したもので、私たちが共有している作品をコピーまたは修正するために使用され、Creative Commons 3.0の著者マークライセンスの条項と条件に従って使用されます.」
DataBindingはAndroid Jetpackの構成です.
LayoutとActivityを動的に接続
制御可能なライブラリ.
今日はDataBindingの使い方を簡単にご紹介します.
まず新しいプロジェクトを作成します.
DataBindingを使用するために構築されている場合.gradeで設定する必要があります.
ではBinding Classは同級です
前回のViewBindingの時と同じです.
xmlファイルの名前形式のチューブシェルをパスカルシェル形式に変換します.
あとはBindingの形で
activity_main.xml -> ActivityMainBinding.kt
コードの作成を開始します
観察するデータをObervableFieldまたは
関連する論理を収集するクラスを表します.
ObservableFieldはObserverモードによって実現されるクラスである.
フィールドデータの変化を検出し、ビューが値を動的に変更できるようにします.
ここでライフサイクルを知るバージョンはLiveDataです.
LiveDataはまた皆さんにご紹介しましょう
決して面倒ではない.
xmlファイルを変更する必要があります
トップレベルのレイアウトと変数ラベルを追加します.
上部にレイアウトラベルを追加すればいいです.
データラベルVariableラベル
Activityとして宣言されたViewModelをインポートしてxmlで使用できます.
単純整理変数タグ:
nameはxmlで使用する名前を表します.
typeはクラスのパスを指定するだけです.
このように宣言されたvariableは非常に役に立つかもしれません.
android:text = "@={viewModel.text}"
ビューのtextを表示します.テキスト
android:text = "@{viewModel.text}"
ビューのtextでviewModelを使用します.テキストを挿入します.
前者はEditText、後者はTextViewとして宣言されます.
EditTextにテキストを入力します.
TextViewのテキストは、上に入力したテキストに従って変更されます.
viewModelで定義されたメソッドはonClickイベントとしても使用できます.
それ以外にも広く使われています.その理由の一つは
ビューの視認性も動的に設定できます.
条件のようにテキスト長が3以下であればINVISIBLEが見えます.
Featuresで設定されているのもBinding Class自動生成です.
アクティブビューやBindingビューなど.
ViewBindingとかなり似ていますが、事実は違います.
DataBindingは、ビュー内のデータをBindingし、データが変更されたときにすぐにデータを反映します.
データの処理が容易になります.
ViewBindingでは、アクティビティでビューを直接使用できます.
ビュー達にBindingさせるので、目的が違うと言えます
例えば、ユーザから情報を入力して画面に表示する
DataBindingを使用することが望ましい.
また、ビューを介してユーザーに表示される役割のみを果たす場合は、
ViewBindingを使ったほうがいいです.
昨年からKotlin Extentionは削除されています.
findViewByIdも近いうちにサポートを停止すると表明した.
だから今はViewBindingを使うのが一番いい方法です.
Googleは対応策としてComponentを開発しているが.
まだ初期なので、今はまだ簡単には使えません.
コパスを学んで機会があればご紹介します
いつしますか.
個人学習をベースに書いているからです.
情報が正しくない可能性があります.
知っていたら後で修正します
いつでもフィードバックを歓迎します.
読んでくれてありがとう.
🎈 DataBiding..
DataBindingはAndroid Jetpackの構成です.
LayoutとActivityを動的に接続
制御可能なライブラリ.
今日はDataBindingの使い方を簡単にご紹介します.
🔍 やってみる
まず新しいプロジェクトを作成します.
DataBindingを使用するために構築されている場合.gradeで設定する必要があります.
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig {
~~~ 중략 ~~~
}
buildFeatures {
dataBinding = true
}
以上のようにbuildFeatures内で作成して同期するとgradle設定は終了します.ではBinding Classは同級です
前回のViewBindingの時と同じです.
xmlファイルの名前形式のチューブシェルをパスカルシェル形式に変換します.
あとはBindingの形で
activity_main.xml -> ActivityMainBinding.kt
コードの作成を開始します
private lateinit var binding : ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//Activity와 View(xml)을 연결
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
//Binding 인스턴스에 viewModel 설정
binding.viewModel = ViewModel()
}
このうち、ViewModelは観察するデータをObervableFieldまたは
関連する論理を収集するクラスを表します.
inner class ViewModel {
var text = ObservableField<String>()
fun click() {
finish()
}
}
内部クラスとして宣言しても、クラスファイルを個別に作成してもObservableFieldはObserverモードによって実現されるクラスである.
フィールドデータの変化を検出し、ビューが値を動的に変更できるようにします.
ここでライフサイクルを知るバージョンはLiveDataです.
LiveDataはまた皆さんにご紹介しましょう
決して面倒ではない.
xmlファイルを変更する必要があります
トップレベルのレイアウトと変数ラベルを追加します.
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.DataBindingActivity"
android:gravity="center"
android:orientation="vertical"
android:padding = "20dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight = "1"
android:gravity="center">
<EditText
/>
~~ 중략 ~~
既存の構造では、上部にレイアウトラベルを追加すればいいです.
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="viewModel"
type="com.example.jetpacksample.activity.MainActivity.ViewModel" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.DataBindingActivity"
android:gravity="center"
android:orientation="vertical"
android:padding = "20dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight = "1"
android:gravity="center">
<EditText
android:id = "@+id/edt_dataBinding"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:textSize="20dp"
android:hint = "input"
android:textAlignment="center"
android:text = "@={viewModel.text}"/>
ここにデータラベルが表示されます.データラベルVariableラベル
Activityとして宣言されたViewModelをインポートしてxmlで使用できます.
単純整理変数タグ:
nameはxmlで使用する名前を表します.
typeはクラスのパスを指定するだけです.
このように宣言されたvariableは非常に役に立つかもしれません.
android:text = "@={viewModel.text}"
ビューのtextを表示します.テキスト
android:text = "@{viewModel.text}"
ビューのtextでviewModelを使用します.テキストを挿入します.
前者はEditText、後者はTextViewとして宣言されます.
EditTextにテキストを入力します.
TextViewのテキストは、上に入力したテキストに従って変更されます.
viewModelで定義されたメソッドはonClickイベントとしても使用できます.
<Button
android:id = "@+id/btn_back"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text = "돌아가기"
android:onClick="@{() -> viewModel.click()}"/>
onClickプロパティでramフォーマットを使用できます.それ以外にも広く使われています.その理由の一つは
ビューの視認性も動的に設定できます.
android:visibility="@{viewModel.text.length() > 3 ? View.VISIBLE : View.INVISIBLE}"
条件の可視性を表示するには、3つの演算子を使用することもできます.条件のようにテキスト長が3以下であればINVISIBLEが見えます.
ViewBindingとは違います
Featuresで設定されているのもBinding Class自動生成です.
アクティブビューやBindingビューなど.
ViewBindingとかなり似ていますが、事実は違います.
DataBindingは、ビュー内のデータをBindingし、データが変更されたときにすぐにデータを反映します.
データの処理が容易になります.
ViewBindingでは、アクティビティでビューを直接使用できます.
ビュー達にBindingさせるので、目的が違うと言えます
例えば、ユーザから情報を入力して画面に表示する
DataBindingを使用することが望ましい.
また、ビューを介してユーザーに表示される役割のみを果たす場合は、
ViewBindingを使ったほうがいいです.
昨年からKotlin Extentionは削除されています.
findViewByIdも近いうちにサポートを停止すると表明した.
だから今はViewBindingを使うのが一番いい方法です.
Googleは対応策としてComponentを開発しているが.
まだ初期なので、今はまだ簡単には使えません.
コパスを学んで機会があればご紹介します
いつしますか.
個人学習をベースに書いているからです.
情報が正しくない可能性があります.
知っていたら後で修正します
いつでもフィードバックを歓迎します.
読んでくれてありがとう.
Reference
この問題について(DataBinding), 我々は、より多くの情報をここで見つけました https://velog.io/@jeep_chief_14/DataBindingテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol