我想知道这两个按钮实现之间的区别:
事件实现:
.xml布局:
<ImageView
android:id="@+id/icon_cart"
android:layout_width="32dp"
android:layout_height="32dp"
android:clickable="true"
android:onClick="@{viewModel::openBasket}" />
在提到的viewModel中:
@Suppress("UNUSED_PARAMETER")
fun openBasket(view: View) {
RxBus.get().post(OpenCartEvent())
}
在RxBus事件类中:
class OpenCartEvent
以及相对活动中:
@Suppress("UNUSED_PARAMETER")
@Subscribe
fun onOpenCartEvent(event: OpenCartEvent) {
// do stuff
}
所以我必须修改3个文件才能创建onClick事件。有点耗时吧? 这是另一种方式:
onClickListener实现:
.xml布局:
<ImageView
android:id="@+id/icon_cart"
android:layout_width="32dp"
android:layout_height="32dp"
android:clickable="true"
android:onClick="@{viewModel::openBasket}" />
相对活动中:
val icon : ImageView = findViewById<ImageView>(R.id.icon_cart)
icon.setOnClickListener {
// do stuff
}
我看到的唯一区别是:
在这种情况下,当我们单击某项时,我们可以在应用中的任何位置进行任何想要的活动来触发事件。
在另一种情况下,我们必须在包含要单击的布局的活动/片段内触发事件。
这是正确的吗?
还有其他区别吗?
这两种方式之间的最佳实践是什么?
哪种方法最优化?
哪一个使用的资源较少,例如RAM?
哪个更“安全”?