Разница между Event и setOnClickListener - PullRequest
0 голосов
/ 28 января 2019

Я хотел бы знать, в чем различия между этими двумя реализациями кнопок:

Реализация событий:

.xml layout:

<ImageView
    android:id="@+id/icon_cart"
    android:layout_width="32dp"
    android:layout_height="32dp"
    android:clickable="true"
    android:onClick="@{viewModel::openBasket}" />

в упомянутой модели представления:

@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 layout:

<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
}

Единственное отличие, которое я вижу, это:

В случае, когда мы нажимаем на что-то, мы можем вызвать событие в любом месте приложения, в любом желаемом действии.

В другом случае,мы должны вызвать событие внутри действия / фрагмента, который содержит макет, по которому мы хотим щелкнуть.

Это правильно?
Есть ли другие различия?
Каков наилучший метод между этимидвумя способами?
Какой метод более оптимизирован?
Какой из них использует меньше ресурсов, таких как ОЗУ?
Какой метод является более "безопасным"?

...