У меня есть родительский recyclerView, и у каждого элемента родителя есть дочерний recyclerView. У меня есть кнопка-переключатель в моем родительском представлении recyclerView, когда эта кнопка выбрана, я должен обновить список дочерних объектов recyclerView. Я пытался всеми возможными способами обновить список детей, но не удалось. Ниже приведен мой код родительского адаптера, откуда я пытаюсь обновить список:
holder.toggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
videosArrayList.clear();
allVideoExceptPersonalizedList.clear();
allVideoArrayList.clear();
setDataForCategory(1,holder,position);
holder.mAdapter.UpdateList(videosArrayList);
} else {
videosArrayList.clear();
allVideoExceptPersonalizedList.clear();
allVideoArrayList.clear();
setDataForCategory(2,holder,position);
holder.mAdapter.notifyDataSetChanged();
holder.mAllVideoAdapter.notifyDataSetChanged();
}
}
});
В приведенном выше коде videoArrayList - это элементы моего дочернего списка, а setDataForCategory предоставляет мне обновленный список.
Я также попытался снова связать адаптер, но это делает мой childRecyclerView пустым, так как он очищает список, но не добавляет новые данные.
holder.mAdapter = new TutorialVideoAdapter(mctx, mFrg, mTracker, videosArrayList,
parentView, parent_fragment, catList.get(position),parentCategoryId,
holder.recyclerView_tutorial_personalized, new ITutorialImageClick() {
@Override
public void imageOnClick(View v, int position) {
int newTutorialCount = tutorialViewModel.getNewTutorialCount(categoryName, myParams,priority);
holder.img_category.setBadgeValue(newTutorialCount);
}
});
holder.recyclerView_tutorial_personalized.setAdapter(holder.mAdapter);
holder.recyclerView_tutorial_personalized.invalidate();
Ниже приведен мой код для дочернего адаптера, где я фактически обновляю list:
public void UpdateList(List<VideoDetailModel> videosArrayList){
mVideoList.clear();
mVideoList.addAll(videosArrayList);
notifyDataSetChanged();
}
Я также попытался сбросить свой адаптер и вызвать childRecyclerView.invalidate (), но это также не помогло мне.
Что именно я делаю неправильно?