Если в привязке данных нет пространства имен атрибута, intellisense работать не будет

1

Существует очень простая функция привязки адаптера.

@JvmStatic
@BindingAdapter("app:test")
fun testBind(v: View, test: Int) {
    //test...
}

Если вы примените этот код в XML, он обычно будет выглядеть так:

Изображение 174551

Функция автозаполнения работает нормально, а xml не выводит никаких предупреждений.

Однако эта функция bindingadapter выдает предупреждение во время компиляции.

warning: Application namespace for attribute app:test will be ignored.

Многие другие сообщения говорят об удалении namepsace для этого предупреждения.

Я удалил пространство имен из функции bindingadapter вместе с ним.

@JvmStatic
@BindingAdapter("test")
fun testBind(v: View, test: Int) {
    //test...
}

Это не распечатает предупреждение во время компиляции.

Но на этот раз xml выводит предупреждение.

Изображение 174551

Также, когда пространство имен существует, функция автозаполнения, которая работала нормально, вообще не работает.

Из всех методов, которые я пробовал, единственный способ разрешить все два предупреждения - указать пространство имен как android.

Есть ли другой путь? Пространство имен Android кажется недоразумением, так как это базовая функция привязки в Android, а не пользовательская функция привязки.

Теги:
android-studio
android-databinding

1 ответ

0

Если вы используете один аргумент в методе адаптера bindong, удалите пространство имен в строке @BindingAdapter (...), после этого добавьте пространство имен bind: перед вызовом строки в XML.

 @JvmStatic
@BindingAdapter("icon")
fun setImage(view: ImageView, imageID: Int) {
}

и bind:icon="@{vm.iconID}"

Если я использую несколько атрибутов, это не сработало.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню