Как раздуть линейный макет с помощью пользовательского представления с помощью привязки данных - PullRequest
0 голосов
/ 30 мая 2020

Я просто хочу создать карту с некоторым Vertical LinearLayout , в каждом из которых есть Horizontal LinearLayout , и в каждом из этих макетов я хочу раздуть представление, подобное приведенному ниже коду :

each_cell. xml

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:android="http://schemas.android.com/apk/res/android">
<data>
    <variable name="live" type="Integer" />
    <variable name="i" type="Integer" />
    <variable name="j" type="Integer" />
</data>

<ImageView
    android:id="@+id/itemView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="30sp"
    app:setI="@{i}"
    app:setJ="@{j}"/>

each_row. xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/row_instance"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="2dp"
    android:orientation="horizontal">

</LinearLayout>

что я добавлю это Горизонтальный LL вид на мой основной Вертикальный LL , и карта будет создана

и kotlin код:

            val cell = DataBindingUtil.inflate<EachCellBinding>(inflater , R.layout.each_cell , HorizontalLinearLayout.row_instance , true   )

но ошибка:

Required DataBindingComponent is null in class EachCellBindingImpl. A BindingAdapter in com.example.gameoflife.SartFragment.StartFragment is not static and requires an object to use, retrieved from the DataBindingComponent. If you don't use an inflation method taking a DataBindingComponent, use DataBindingUtil.setDefaultComponent or make all BindingAdapter methods static.

1 Ответ

0 голосов
/ 30 мая 2020

Как показано в ошибке, вы объявили методы адаптера привязки в com.example.gameoflife.SartFragment.StartFragment. Объявление его внутри класса делает его нестатическим c. Но методы адаптера привязки всегда должны быть c. Итак, возьмите методы из класса и поместите его за пределы класса, и он станет stati c, и ваша ошибка будет решена.

...