🧗♀️
【Android】DataBinding のバインディング式でクリックイベントを取得する
android:onClick
属性を設定する
クリックイベントを取得したいウィジェットに、android:onClick
を設定します。
// 引数のViewなし
android:onClick="@{() -> viewModel.clickText()}"
// 引数のViewあり
android:onClick="@{viewModel::clickButton}"
// バインドされているデータを渡す
android:onClick="@{() -> viewModel.clickText(model)}"
ViewModel.kt
// android:onClick="@{() -> viewModel.clickText()}"の処理
fun clickText() {}
// android:onClick="@{viewModel::clickButton}"の処理
fun clickButton(view: View) {}
// android:onClick="@{() -> viewModel.clickText(model)}"の処理
fun clickText(model: Model) {}
おまけ : その他のイベント
// EditTextの入力を監視する
android:onTextChanged="@{viewModel::onTextChange}"
// SwipeRefreshLayoutのリフレッシュイベントを取得する
app:onRefreshListener="@{() -> viewModel.refresh()}"
ViewModel.kt
// android:onTextChanged="@{viewModel::onTextChange}"の処理
fun onTextChange(s: CharSequence, start: Int, end: Int, count: Int) {}
// app:onRefreshListener="@{() -> viewModel.refresh()}"の処理
fun refresh() {}
Discussion