J'essaie de créer un point de vue d'une vue en utilisant l'exemple projet Android-Sunflower. Le problème actuel est que lorsque j'essaie de construire le projet, je reçois l'erreur error: cannot find symbol symbol: class FragmentShopBindingImpl location: package {{packageName}}.databinding
Dans la classe DataBindinMapperImpl
Je ne suis pas vraiment sûr de ce qu'il me manque ici, puisque j'ai tout ajouté de l'exemple projet. La classe FragmentShopBindingImpl
n'est pas générée, ni ne devrait-il pas? Puisque je ne peux voir aucune occurrence d'une classe se terminant par 'IMP' dans le Android Exemple de tournesol
[.____] Mon code:
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
}
Disposition:
<?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>
Image du fichier généré (ignorer le {{packagename}}:
Vous devez définir une variable comme observablefield ci-dessous:
public final ObservableField<String> name = new ObservableField<>();
public final ObservableField<String> family = new ObservableField<>();