Идентификаторы должны иметь пользовательские типы из XML-файла, привязка к данным с помощью observablefield

#android #android-databinding

#Android #android-привязка к данным

Вопрос:

Я хочу, чтобы видимость моего представления зависела от поведения условия, поэтому я использую ObservableField и с помощью databinding пытаюсь изменить видимость представления, но получаю проблему типа «Идентификаторы должны иметь пользовательские типы из XML-файла. В inputType отсутствует это»

Код:

 Kotlin File

var showView: ObservableField<Boolean>? = ObservableField(false)

//API call response
showView.set(true)


Layout File:

<TextView
 android:id="@ id/textview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:visibility="@{viewModel.showView ? View.VISIBLE : View.GONE}"/>
  

Как применить привязку к данным с помощью Observablefield типа boolean? Я также использовал его для строкового текста, и он работает, но не работает с логическим условным выражением.

Ответ №1:

Я не уверен, так ли это здесь, но это сообщение об ошибке обычно отображается, когда вы ссылаетесь на тип в ваших выражениях привязки, который не был объявлен в <data> разделе вашего макета. Таким же образом, как вы объявляете View тип в качестве импорта, вы должны объявить тип InputType .

 <data>
    <!-- Maybe an import for InputType is missing here? -->
    <import type="android.view.View" />
    <variable
        name="viewModel"
        type="com.yourpackage.YourViewModel"/>
</data>
  

Комментарии:

1. Нет, я декализировал ViewModel в разделе <данные>

2. Но проблема здесь не в viewmodel. Проблема, похоже, в том, что вызываемый тип InputType отсутствует в вашем импорте. Вы уверены, что объявили для него допустимый импорт?

3. О, да, понял. Я забыл импортировать inputType, такая маленькая ошибка. спасибо за ответ