#android #kotlin #android-layout #android-databinding
Вопрос:
Я хочу создать макет, который можно использовать в различных действиях, поэтому я создаю класс, подобный этому:
open class Parent(var v1: String?,var v2:String?)
class Child(v1:String?,v2:String?, var v3:String?):Parent(v1,v2)
Я создаю макет:
<?xml version="1.0" encoding="utf-8"?>
<layout>
<data>
<variable
name="data"
type="androidx.lifecycle.LiveDataamp;<java.util.Listamp;<Parent>>" />
</data>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/contentAreaColor"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@ id/rv_draw_date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:items="@{data}"/>
</LinearLayout>
</layout>
В деятельности1. Я пытаюсь установить нижеприведенную строку кода.
viewModel.data = MutableLikeData<List<Child>>()
...
mBinding.data = viewModel.data <error here>
но компиляция исследует сообщение об ошибке:
> Type mismatch: inferred type is LiveData<List<Child>> but
> LiveData<(Mutable)List<Parent!>!>? was expected
Не могли бы вы помочь мне создать макет, который можно использовать в многочисленных мероприятиях.
Заранее благодарю
Комментарии:
1. Вы хотите создать отдельный файл макета, а затем использовать его в различных действиях / фрагментах и получить к нему доступ с помощью привязки данных ?
2. Я хочу создать единый макет и использовать его для нескольких видов деятельности с различными типами дочерних данных.
3. Тогда что это за ошибка привязки данных, о которой вы там написали ? Это не по теме
Ответ №1:
В принципе, измените MutableLiveData<Список< Дочерний>< Дочерний>>() на
Изменяемые данные<Список< Родитель>< Родитель>>()
viewModel.data = MutableLiveData<List<Parent>>()