Привязка данных Android: не удается найти ... BindingImpl в созданном файле привязки данных - PullRequest
2 голосов
/ 31 марта 2019

Я пытаюсь привязать модель представления, используя пример проекта android-sunflower.Текущая проблема заключается в том, что когда я пытаюсь построить проект, я получаю сообщение об ошибке error: cannot find symbol symbol: class FragmentShopBindingImpl location: package {{packageName}}.databinding в классе DataBindinMapperImpl. Я не совсем уверен, чего мне здесь не хватает, так как я добавил все из примера проекта.Класс FragmentShopBindingImpl не генерируется или не должен?Так как я не вижу ни одного вхождения класса, заканчивающегося на 'Impl' в примере Android Sunflower
Мой код:

override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {

        val factory = InjectorUtils.provideShopViewModelFactory(context!!)
        val shopViewModel = ViewModelProviders.of(this, factory)
            .get(ShopViewModel::class.java)

        val binding = DataBindingUtil.inflate<FragmentShopBinding>(
            inflater, R.layout.fragment_shop, container, false).apply {
            viewModel = shopViewModel
            lifecycleOwner = this@ShopFragment
        }

        return binding.root
    }

Макет:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <data>
        <variable
            name="viewModel"
            type="{{packageName}}.viewmodel.ShopViewModel" />
    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".fragments.ShopFragment">

        <TextView
            android:text="@{viewModel}"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </LinearLayout>
</layout>

Изображение сгенерированного файла (игнорировать {{packageName}}:

enter image description here

1 Ответ

1 голос
/ 11 мая 2019

Кажется, единственное, что мне нужно было добавить, это <import type="android.view.View" /> в тегах данных ...

...