в привязке данных андроида просто я хочу контролировать видимость представления, проверяя параметр viewmodel как profilePicUrl
Решение 1:
, когда profilePicUrl
пустое представление, должно быть пропущено, иначедолжно быть видно, например:
<data>
<import type="android.view.View"/>
<import type="android.text.TextUtils"/>
<variable name="viewModel" type="xx.xxxxx.xxxxxxx.MyViewModel"/>
</data>
...
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="@{TextUtils.isEmpty(viewModel.profilePicUrl) ? View.GONE : View.VISIBLE}"
>
я получаю эту ошибку:
error: '@{TextUtils.isEmpty(viewModel.profilePicUrl)? View.GONE : View.VISIBLE' is incompatible with attribute visibility (attr) enum [gone=2, invisible=1, visible=0].
Решение 2:
после получения этой ошибки я пытаюсь проверить другое решение дляПодход, который, например:
BindingAdapters
класс:
object BindingAdapters {
@BindingAdapter("visibleIf")
@JvmStatic
fun changeVisibility(@NonNull imageView: ImageView, visible: Boolean) {
if (visible) {
imageView.visibility = View.VISIBLE
} else {
imageView.visibility = View.GONE
}
}
}
XML-макет:
<data>
<import type="android.view.View"/>
<import type="android.text.TextUtils"/>
<variable name="viewModel" type="xx.xxxxx.xxxxxxx.MyViewModel"/>
</data>
...
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:visibleIf="@{TextUtils.isEmpty(viewModel.profilePicUrl)}"
>
я получаю эту ошибку:
error: attribute visibleIf (aka xxx.xxxxx.xxxxxxxx:visibleIf) not found.