Как установить адаптеры вложенных представлений рециркулятора при использовании привязки данных?

1

У меня есть вложенное представление переработчика (родитель и несколько потомков), я также использую привязку данных.

Проблема в том, что, поскольку адаптер для вложенных утилизаторов отличается, я не знаю, как установить адаптер для вложенных утилизаторов в Kotlin или Java.

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

Если я не хочу использовать привязку данных, решение по этой ссылке работает нормально.

Спасибо

Теги:
kotlin
android-recyclerview
android-databinding
android-listview

2 ответа

1

Привязка данных - это управление данными ,, так что вы можете поместить дочерний адаптер в родительскую модель и определить адаптер привязки данных для просмотра в программе Recycleler.

pulic class ParentModel
{
    private ChildAdapter childAdapter;
}
public class DataBindingAdapters
{
    @BindingAdapter({"adapter"})
    public void setRecyclerViewAdapter(RecyclerView recyclerView, ChildAdapter childAdapter)
    {
        recyclerView.serAdapter(childAdapter);
    }
}
<recyclerView
    app:adapter="@{model.childAdapter}"/>
0

Для настройки адаптера RecyclerView используется привязка данных Android.

Код расположения:

Часть данных:

<data>
    <variable
        name="adapter"
        type="com.app.adapter.RecyclerViewAdapter" />
</data>

Макет Recyclerview:

<androidx.recyclerview.widget.RecyclerView
  android:id="@+id/recycler_view"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  app:adapter="@{adapter}"
  app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
  android:orientation="vertical"/>

Java файл: DataBindingAdapters.java

public class DataBindingAdapters {

    @BindingAdapter({"adapter"})
    public static void setRecyclerViewAdapter(RecyclerView recyclerView,
                                        RecyclerViewAdapter recyclerViewAdapter) {

        recyclerView.setAdapter(RecyclerViewAdapter);
    }
}

Замечания:
1. setRecyclerViewAdapter должен быть статическим, чтобы избежать этой ошибки.
2. В моем коде RecyclerViewAdapter - это настраиваемый адаптер переработчика.
3. Установите LayoutManager либо в коде, либо в файле макета, но не в обоих. (XML предпочтительнее при использовании привязки данных Android)
4. См. Этот пост SO для запросов, связанных с менеджером макета, например, как установить для androidX, ориентацию, строки сетки и т.д.

Ещё вопросы

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