2016-10-11 18 views
3

異なるアクティビティー内に異なるアダプターを持つ2つのデータ・セットがありますが、他のアダプターでは機能しません。notifyDataSetChanged()を使用します。だから私のadapterFirstクラスの中で私はを持っていて、notifyDataSetChanged()を使っていて、adapterFirstが更新されたときに通知するためにadapterSecondに電話したいと思う。 LongClick他のアダプターからのrecyclerviewアダプターの値のリフレッシュ

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); 
      } 
     } 
    } 
+0

投稿コード –

+0

@HeshanSandeepaコードを更新しました – BXUMZSE

+0

あなたもログを投稿することができます –

答えて

0

を押したときAdapterSecondデータが更新されていないアダプタの初期化の順序は、いくつかの問題を持っているように思えます。

だけfirstAdapter

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

はちょうど彼らが初期化される順序を確認する前に、あなたはsecondAdapterを初期化していることを確認してください!

関連する問題