Обновление значений адаптера recyclerview из другого адаптера


У меня есть два набора данных с разными адаптерами внутри одного действия, и я хочу использовать notifyDataSetChanged(), однако он не работает для другого адаптера. Так что внутри моего adapterFirst класса у меня есть LongCLickListener, который использует notifyDataSetChanged(), и я хочу вызвать adapterSecond, чтобы уведомить тоже, если adapterFirst обновляется. Данные AdapterSecond не обновляются при нажатии кнопки LongClick

 public class AdapterFirst extends RecyclerView.Adapter <AdapterFirst .ViewHolder> {

            private List<Object> objectList;
            private Context mContext;
            AdapterSecond adapterSecond;

            public AdapteFirst(List<Object> list) { objectList= list; }

            @Override
            public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

                View view = LayoutInflater.from(parent.getContext())
                     .inflate(R.layout.item_list, parent, false);
                return new ViewHolder(view);
            }

          @Override
            public void onBindViewHolder(final ViewHolder holder, int position) {

            holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {

                    @Override
                    public boolean onLongClick(View v) {
                         //query method
                         notifyDataSetChanged(); //working

                         //here it gets the nullpointerexception error
                         adapterSecond = new AdapteSecond();
                         adapterSecond.notifyDataSetChanged(); 
                    }
            });
      }

        @Override
            public int getItemCount() {
                return (objectList != null? objectList.size():0);
            }

            public class ViewHolder extends RecyclerView.ViewHolder {
                public TextView data;

                public ViewHolder(View itemView) {
                    super(itemView);
                    data= (TextView) itemView.findViewById(R.id.text);        
                }
            }
        }

AdapterSecond

    public class AdapterSecond extends 
                  RecyclerView.Adapter <AdapterSecond.ViewHolder> {

        private List<Object> objectList;
        private Context mContext;

        public AdapterSecond () {}

        public AdapterSecond (List<Object> list) { objectList= list; }

        @Override
        public AdapterSecond.ViewHolder onCreateViewHolder(ViewGroup parent, 
                        int viewType) {
            View view = LayoutInflater.from(parent.getContext())
                   .inflate(R.layout.item_list_2, parent, false);
            return new ViewHolder(view);
        }

        @Override
        public void onBindViewHolder(final AdapterSecond.ViewHolder holder, int position) {

            final Object object = objectList.get(holder.getAdapterPosition());
            holder.data2.setText(object.getData());

         }    
        @Override
        public int getItemCount() {
            return (objectList != null? objectList.size():0);
        }

        public class ViewHolder extends RecyclerView.ViewHolder {
            public TextView data2;

            public ViewHolder(View itemView) {
                super(itemView);
                data2= (TextView) itemView.findViewById(R.id.text2);
            }
        }
    }
1 3

1 ответ:

Похоже, что порядок инициализации адаптеров имеет некоторые проблемы.

Просто убедитесь, что вы инициализировали secondAdapter перед firstAdapter

secondAdapter= new SecondAdapter();
firstAdapter = new FirstAdapter();
Просто проверьте порядок, в котором они инициализируются!