Обновление дочернего элемента recyclerView с помощью нажатия кнопки родительского recyclerView - PullRequest
0 голосов
/ 16 марта 2020

У меня есть родительский 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 (), но это также не помогло мне.

Что именно я делаю неправильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...