Android 从另一个适配器刷新recyclerview适配器的值

Android 从另一个适配器刷新recyclerview适配器的值,android,notifydatasetchanged,Android,Notifydatasetchanged,我必须在一个活动中使用两个具有不同适配器的数据集,我想使用notifydatasetchange()但是它不适用于另一个适配器。因此,在我的adapterFirst类中,我有longclicklinklistener,它正在使用notifyDataSetChanged(),我想调用adapterSecond来通知adapterFirst是否更新。按下长按时,适配器秒数据不会更新 public class AdapterFirst extends RecyclerView.Adapter <

我必须在一个活动中使用两个具有不同适配器的数据集,我想使用
notifydatasetchange()
但是它不适用于另一个适配器。因此,在我的
adapterFirst
类中,我有
longclicklinklistener
,它正在使用
notifyDataSetChanged()
,我想调用
adapterSecond
来通知adapterFirst是否更新。按下长按时,适配器秒数据不会更新

 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);        
                }
            }
        }
公共类适配器首先扩展了RecyclerView.Adapter{
私有列表对象列表;
私有上下文;
适配器秒适配器秒;
public AdapteFirst(List){objectList=List;}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
View=LayoutInflater.from(parent.getContext())
.充气(R.layout.item_列表,父项,假);
返回新的ViewHolder(视图);
}
@凌驾
公共无效onBindViewHolder(最终ViewHolder,内部位置){
holder.itemView.setOnLongClickListener(新视图.OnLongClickListener(){
@凌驾
仅长按公共布尔值(视图v){
//查询方法
notifyDataSetChanged();//正在工作
//这里它得到了nullpointerexception错误
adapterSecond=新的adapterSecond();
adapterSecond.notifyDataSetChanged();
}
});
}
@凌驾
public int getItemCount(){
返回(objectList!=null?objectList.size():0);
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
公共文本视图数据;
公共视图持有者(视图项视图){
超级(项目视图);
data=(TextView)itemView.findViewById(R.id.text);
}
}
}
适配器秒

    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);
            }
        }
    }
公共类适配器第二次扩展
RecyclerView.适配器{
私有列表对象列表;
私有上下文;
公共适配器秒(){}
公共适配器第二(列表){objectList=List;}
@凌驾
公共适配器Second.ViewHolder onCreateViewHolder(视图组父级,
int视图类型){
View=LayoutInflater.from(parent.getContext())
.充气(R.layout.item_list_2,父项,假);
返回新的ViewHolder(视图);
}
@凌驾
BindViewHolder上的公共无效(最终适配器Second.ViewHolder,内部位置){
final Object=objectList.get(holder.getAdapterPosition());
holder.data2.setText(object.getData());
}    
@凌驾
public int getItemCount(){
返回(objectList!=null?objectList.size():0);
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
公共文本视图数据2;
公共视图持有者(视图项视图){
超级(项目视图);
data2=(TextView)itemView.findViewById(R.id.text2);
}
}
}

适配器的初始化顺序似乎有一些问题

只需确保已在第一个适配器之前初始化第二个适配器

secondAdapter= new SecondAdapter();
firstAdapter = new FirstAdapter();

只需检查它们初始化的顺序

张贴整个代码plz@HeshanSandeepa更新了编码,也可以发布日志