1. ホーム
  2. java

[解決済み] Android データバインディング onClick メソッドに引数を渡す

2023-07-01 02:06:36

質問

にカスタム引数を渡すことは可能ですか? onClick メソッドにカスタム引数を渡すことはできますか?私はonClickListenerを使用する必要がある私のレイアウトXMLファイルを持っています。

<?xml version="1.0" encoding="utf-8"?>
<layout ...>

    <data>
        <variable
            name="viewModel"
            type="com.productivity.tiktak.ui.tracker.viewModel.CategoryViewModel"/>
        <variable
            name="callback"
            type="com.productivity.tiktak.ui.tracker.TrackerAdapter"/>
    </data>

    <android.support.v7.widget.CardView
        android:onClick="@{callback.onCategoryClick(viewModel)}"
        ...
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

       <!-- ... Some stuff -->

    </android.support.v7.widget.CardView>
</layout>

そして、ここにクリックハンドラのコードがあります。

public void onCategoryClick(View view, CategoryViewModel categoryViewModel)
{
    //handler code...
}

CategoryViewModelオブジェクトをxmlからクリックハンドラへ渡すことは可能でしょうか?

どのように解決するのですか?

ラムダ式を使用して、パラメータとしてビューを渡すことができます。

 android:onClick="@{() -> callback.onCategoryClick(viewModel)}"

ビューが必要な場合は、それも一緒に渡すことができます。

 android:onClick="@{(view) -> callback.onCategoryClick(view, viewModel)}"