У меня есть вложенное представление переработчика (родитель и несколько потомков), я также использую привязку данных.
Проблема в том, что, поскольку адаптер для вложенных утилизаторов отличается, я не знаю, как установить адаптер для вложенных утилизаторов в Kotlin или Java.
Если я не хочу использовать привязку данных, решение по этой ссылке работает нормально.
Спасибо
Привязка данных - это управление данными ,, так что вы можете поместить дочерний адаптер в родительскую модель и определить адаптер привязки данных для просмотра в программе 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}"/>
Для настройки адаптера 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, ориентацию, строки сетки и т.д.