NotifyDataSetChanged () не работает в адаптере - PullRequest
0 голосов
/ 14 июня 2019

У меня два RecylerView один внутри другого. Теперь я хочу обновить свой внутренний элемент recyclerView при щелчке элемента. Поэтому после обновления моей локальной базы данных я звоню notifyDataSetChanged(), но это больше не вызывает мой onBindViewHolder().

Ниже мой код для onItemClick():

 public class MyViewHolder extends RecyclerView.ViewHolder {

        private ImageView imageView;
        private TextView tvTutorialName, text_new;
        private ConstraintLayout main_item;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);

            main_item = itemView.findViewById(R.id.main_item);
            tvTutorialName = itemView.findViewById(R.id.tutorial_name);
            text_new = itemView.findViewById(R.id.text_new);
            imageView = itemView.findViewById(R.id.tutorial_image);

            main_item.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                    manager.save("tutorialTapGuide", "notFirstTime");
                    TutorialViewModel tutorialViewModel = new TutorialViewModel(SmartMirror.getInstance());

                    int pos = (int) view.getTag();
                    tutorialName = mVideoList.get(pos).serverFolderName;

                    tutorialId = mVideoList.get(pos).objectId;
                    // update
                    tutorialViewModel.updateNewTutorialToOld(tutorialName);

                    notifyDataSetChanged();
                    //   allCheckingAfterStoragePermissionGranted(view.findViewById(R.id.tutorial_image), pos);
                }
            });
        }

 @Override
    public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int position) {

        myViewHolder.main_item.setTag(position);

        String tutorialFolder = mVideoList.get(position).serverFolderName;
        myViewHolder.tvTutorialName.setText(mVideoList.get(position).displayTutorialName);
        myViewHolder.main_item.setTransitionName("trans_image" + position);

        TutorialViewModel tutorialViewModel = new TutorialViewModel(SmartMirror.getInstance());
        int isNewTutorial = tutorialViewModel.isNewTutorial(tutorialFolder);

        if (isNewTutorial == 1)
            myViewHolder.text_new.setVisibility(View.VISIBLE);

        if (CommonUtilities.haveNetworkConnection(mContext)) {

            Glide.with(mContext).load(mVideoList.get(position).imageURL)
                    .apply(new RequestOptions().placeholder(R.drawable.video_placeholder).error(R.drawable.video_placeholder))
                    .into(myViewHolder.imageView);
        } else {
            myViewHolder.imageView.setImageResource(R.drawable.video_placeholder);
        }


    }

Я устанавливаю адаптер дочернего устройства recyclerView из родительского интерфейса recyclerView.

 holder.mAdapter = new TutorialVideoAdapter(mctx, mFrg, mTracker, videosArrayList, parentView, parent_fragment, catList.get(position), tutorialStepsList, player, holder.recyclerView_tutorial);
                holder.recyclerView_tutorial.setLayoutManager(new GridLayoutManager(mctx, 3));
                holder.recyclerView_tutorial.setAdapter(holder.mAdapter);
                holder.recyclerView_tutorial.setScrollY(00);

Теперь я не знаю, почему notifyDataSetChanged() не вызывает onBindViewHolder.

...