Это будет зависеть от того, чего вы пытаетесь достичь. Если вы хотите сделать свой код более тестируемым, я бы посоветовал вам обработать щелчок в XML, который вызовет функцию в вашем Activity или другом классе, где вы можете протестируйте поведение этой функции, и если вам нужно добавить более сложную логику, такую как проверка данных, хранение базы данных и т. д., это будет лучше. В конце представление должно быть фиктивным, и это позволяет вам повторно использовать код, как в случае, если другая функция обрабатывает его.
Кроме того, наличие большого количества логики в XML - плохая практика, которая сделает ваш код неуправляемым. Я бы посоветовал вам прочитать о шаблоне MVVM и привязке данных Шаблон проектирования Android MVVM
Попробуйте это:
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:onClick="@{() -> activity.myCountMethod()}"
android:text="Less"
/>
В Activity вы должны реализовать myCountMethod()
, если вы не хотите, чтобы в вашей деятельности вы могли добавить еще одну переменную с классом, который вам нужен:
<data>
<import type="android.view.View"/>
<variable
name="activity"
type="com.amelio.ui.activities.ActivityProductDetail"/>
<-- Add OtherClass -->
<variable
name="otherClass"
type="com.amelio.ui.activities.OtherClass"/>
<variable
name="count"
type="Integer"/>
</data>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:onClick="@{() -> otherClass.myCountMethod()}"
android:text="Less"
/>
Вы можете найти больше информации здесь:
https://developer.android.com/topic/libraries/data-binding/expressions#listener_bindings