Event和setOnClickListener之间的区别

时间:2019-01-28 10:57:35

标签: java android events kotlin onclicklistener

我想知道这两个按钮实现之间的区别:

事件实现:

.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?
哪个更“安全”?

0 个答案:

没有答案