最近じわじわと来ている、AndroidでMVVMライクな体験ができるライブラリ [Data Binding Library] (https://developer.android.com/intl/ja/tools/data-binding/guide.html)ですが、.NETのWPFっぽくonClickにOnClickListenerをBindしようとするとエラーがでるという現象に遭遇しました。
2つ解決策を見つけたので記しておきます。解決策①が簡単です。
#したいこと
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="@{viewModel.hogeCommand}"/>
ViewModel側
public class ViewModel {
public View.OnClickListener getHogeCommand() {
return hogeCommand;
}
}
##解決策①
android:onClickの代わりにandroid:onClickListenerを使う
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClickListener="@{viewModel.hogeCommand}"/>
##解決策②
Renamed Setters を使う
ViewModel側
@BindingMethods({
@BindingMethod(type = Button.class,
attribute = "android:onClick",
method = "setOnClickListener")
})
public class ViewModel {
@BindingMethod(type = Button.class,
attribute = "android:onClick",
method = "setOnClickListener")
public View.OnClickListener getHogeCommand() {
return hogeCommand;
}
}