Данные комнаты наблюдения Для ребенка. - PullRequest
0 голосов
/ 30 января 2019

У меня есть вложенный 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);
    }
}

}

...