У меня есть вложенный RecyclerView, вертикальный (родительский) с горизонтальным RecyclerView (дочерним) внутри каждого элемента родителя, аналогично приложению Google Play.Все горизонтальные RecyclerView должны быть разбиты на страницы.Я использую комнату для хранения и наблюдения данных.У меня есть две таблицы: одна для данных родителя, а другая для данных ребенка.Я могу заполнить родительское представление переработчика, но не знаю, как заполнить дочернее представление переработчика для каждого элемента родителя.Может кто-нибудь сказать, как я могу наблюдать за таблицей для детей, чтобы все новые элементы, добавленные в таблицу, отражались обратно в соответствующем ракурсе переработчика?
Вот как я наблюдаю родительские данные:
private void startObserver() {
mViewmodel.getSectionList().observe(this, sectionList -> {
mSectionList.addAll(sectionList);
mRecyclerViewAdapter.submitList(sectionList);
});
}
Это мой класс адаптера:
public class HomeFragmentAdapter extends ListAdapter<Section, HomeFragmentAdapter.HomeCategoryViewHolder> {
private Context context;
private CategoryVideoAdapter videoAdapter;
private RecyclerView.RecycledViewPool viewPool;
private HomeFragmentListener listener;
HomeFragmentAdapter(Context context, HomeFragmentListener listener) {
super(Section.DIFF_CALLBACK);
this.context = context;
viewPool = new RecyclerView.RecycledViewPool();
this.listener = listener;
}
@NonNull
@Override
public HomeCategoryViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
ItemHomeFeedBinding homeFeedBinding = DataBindingUtil.inflate(LayoutInflater.from(context), R.layout.item_home_feed, parent, false);
return new HomeCategoryViewHolder(homeFeedBinding);
}
@Override
public void onBindViewHolder(@NonNull HomeCategoryViewHolder holder, int position) {
Section section = getItem(holder.getAdapterPosition());
holder.bind(section);
}
class HomeCategoryViewHolder extends RecyclerView.ViewHolder {
private ItemHomeFeedBinding homeFeedBinding;
private Section model;
private LinearLayoutManager layoutManager;
HomeCategoryViewHolder(@NonNull ItemHomeFeedBinding homeFeedBinding) {
super(homeFeedBinding.getRoot());
this.homeFeedBinding = homeFeedBinding;
videoAdapter = new CategoryVideoAdapter(context);
layoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);
homeFeedBinding.rvCategory.setLayoutManager(layoutManager);
homeFeedBinding.rvCategory.setRecycledViewPool(viewPool);
homeFeedBinding.rvCategory.setAdapter(videoAdapter);
homeFeedBinding.rvCategory.setNestedScrollingEnabled(false);
}
private void bind(Section categoryModel) {
this.model = categoryModel;
homeFeedBinding.setSection(model);
// I have to fetch corresponding list from the child data
// and add it to the childs adapter, but doesn't know how to
// fetch it here
// videoAdapter.submitList(childList);
}
}
}