这似乎已经很老了。我一直在审查Android Data Binding Documentation
在SO上的所有帖子都充斥着,但是似乎没有任何作用。
无论我如何格式化XML,我都会得到相同的结果。当我最初进行此工作(使用不传递参数的lambda)时,我经历了很多试验和错误。现在,我需要在onClick中传递View,即时通讯可以反复尝试,但仍然无法正常工作。
MainViewModel.java
private void navClicked(@NonNull View view) {
switch (view.getId()) {
case R.id.btn1:
break;
case R.id.btn2:
break;
}
}
public void testBtn() {}
activity_main.xml
<data>
<variable
name="mainViewModel"
type="com.example.viewmodel.MainViewModel" />
</data>
<!-- Works perfectly -->
<!-- however I would need a method for every button and that becomes redundant -->
<Button
android:id="@+id/testBtn"
android:onClick="@{() -> mainViewModel.testBtn()}"
android:text="@string/testBtn" />
<!-- "msg":"cannot find method navClicked(android.view.View) in class com.example.viewmodel.MainViewModel" -->
<Button
android:id="@+id/btn1"
android:onClick="@{(v) -> mainViewModel.navClicked(v)}"
android:text="@string/btn1" />
<!-- "msg":"cannot find method navClicked(android.view.View) in class com.example.viewmodel.MainViewModel" -->
<Button
android:id="@+id/btn2"
android:onClick="@{mainViewModel::navClicked}"
android:text="@string/btn2" />
<!-- "msg":"Could not find identifier \u0027v\u0027\n\nCheck that the identifier is spelled correctly, and that no \u003cimport\u003e or \u003cvariable\u003e tags are missing." -->
<!-- This is missing (view) in the lambda - makes sense to fail -->
<Button
android:id="@+id/btn3"
android:onClick="@{() -> mainViewModel.navClicked(v)}"
android:text="@string/btn2" />
答案 0 :(得分:0)
navClicked()是私有的...
TO_DAYS(CAST(maxDeliveryDateTime as date) - TO_DAYS(CAST(maxOrderDateTime as date)
答案 1 :(得分:0)
一旦我尝试了一下,它就起作用了:
XML:
android:onClick="@{() -> model.clickEvent(123)}"
型号:
public void clickEvent(int id) {...}
我使用字符串作为id,但我认为它也可以与整数一起使用。