Consider the following code:
binding adapter:
@BindingAdapter("visibility")
fun setVisibility(view: View, shouldBeVisible: Boolean) {
    view.visibility = if (shouldBeVisible) View.VISIBLE else View.GONE
}
what's the difference between using bind namespace like this:
<TextView
        android:id="@+id/text_view"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        bind:visibility="@{mainViewModel.showTextView}"/>
and using app namespace like this:
<TextView
    android:id="@+id/text_view"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:text="Hello World!"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:visibility="@{mainViewModel.showTextView}"/>
they both work in my code.