android - Swap items between two recyclerView lists -


i have 2 fragments i_have , to_buy of pageview. both of them have list of items created using recyclerview. have 2 different adapters infoadapter , info2adapterfor both of fragments respectively.

i have set onclicklistner on icon(image) of each item, on click deletes item

class myviewholder extends recyclerview.viewholder implements view.onclicklistener{     textview title;     imageview icon;     textview amt;      public myviewholder(view itemview) {         super(itemview);         title = (textview) itemview.findviewbyid(r.id.i_have_row_name);         icon = (imageview) itemview.findviewbyid(r.id.i_have_row_image);         amt = (textview) itemview.findviewbyid(r.id.i_have_row_amount);         icon.setonclicklistener(this);     }      @override     public void onclick(view v) {         delete(getposition());             } } 

the delete method follows

public void delete(int position){     data.remove(position);     notifyitemremoved(position); } 

now want is, whenever item gets deleted i_have, should automatically added to_buy , vice verse.

i have created add method in adapter of to_buy class

public void add(string s){     information2 information2 = new information2();     information2.name2 = s;     information2.iconid2 = r.drawable.potatoes;     information2.amount = "1kg";     data2.add(0,information);     notifydatasetchanged(); } 

but confused how call method adapter of i_have class. non-static method, object should use call add method? created object of class not sure should reference to?

[edit]

i implemented yshahsk said in answer need add parameter in myviewholder call.

the oncreateviewholder() follows:

public myviewholder oncreateviewholder(viewgroup parent, int viewtype) {     view view = inflater.inflate(r.layout.i_have_row, parent, false);      myviewholder holder = new myviewholder(view);     return holder; } 

[edit2]

as requested

here adapter file infoadapter i_have fragment.

package example.srujan.com.exapp4; import android.content.context; import android.support.v7.widget.recyclerview; import android.util.log; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.imageview; import android.widget.textview; import android.widget.toast;  import java.util.collections; import java.util.list;  /**  * created srujan on 14-07-2015.  */ public class infoadapter extends     recyclerview.adapter<infoadapter.myviewholder> {  private layoutinflater inflater; list<information> data = collections.emptylist() ;   public infoadapter(context context, list<information> data){     inflater = layoutinflater.from(context);     this.data=data; }  public void delete(int position){     data.remove(position);     notifyitemremoved(position); }  public void add(string s){     log.d("tag",data.size()+" string received: "+s);     information information = new information();     information.name = s;     information.iconid = r.drawable.potatoes;     information.amount = "1kg";     data.add(0,information);     notifydatasetchanged(); }   @override public myviewholder oncreateviewholder(viewgroup parent, int viewtype) {     view view = inflater.inflate(r.layout.i_have_row, parent, false);     myviewholder holder = new myviewholder(view);     return holder; }  @override public void onbindviewholder(myviewholder holder, int position) {     information current = data.get(position);     holder.title.settext(current.name);     holder.amt.settext(current.amount);     holder.icon.setimageresource(current.iconid);  }  @override public int getitemcount() {     return data.size(); }  class myviewholder extends recyclerview.viewholder implements view.onclicklistener{     textview title;     imageview icon;     textview amt;      public myviewholder(view itemview) {         super(itemview);         title = (textview) itemview.findviewbyid(r.id.i_have_row_name);         icon = (imageview) itemview.findviewbyid(r.id.i_have_row_image);         amt = (textview) itemview.findviewbyid(r.id.i_have_row_amount);         icon.setonclicklistener(this);     }      @override     public void onclick(view v) {         delete(getposition());         //log.d("tag3","string passed 2: tametu");         //add("tomatu");     } } } 

here adapter info2adapter, 1 to_buy

package example.srujan.com.exapp4;  import android.content.context; import android.support.v7.widget.recyclerview; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.imageview; import android.widget.textview;  import java.util.collections; import java.util.list;  /**  * created srujan on 19-07-2015.  */ public class info2adapter extends     recyclerview.adapter<info2adapter.myviewholder> {  private layoutinflater inflater; list<information2> data2 = collections.emptylist() ;   public info2adapter(context context, list<information2> data){     inflater = layoutinflater.from(context);     this.data2=data; }  //test purpose public info2adapter() {  }  //    public void addtobuy(information2 i){ //        information2 current = new information2(); //        current.name2 = i.name2; //        current.iconid2 = i.iconid2; //        data2.add(current); //        notifydatasetchanged(); //    }  @override public myviewholder oncreateviewholder(viewgroup parent, int viewtype) {     view view = inflater.inflate(r.layout.to_buy_row, parent, false);     myviewholder holder = new myviewholder(view);     return holder; }  @override public void onbindviewholder(myviewholder holder, int position) {     information2 current = data2.get(position);     //holder.title.settext(current.name);     holder.title.settext(current.name2);     holder.icon.setimageresource(current.iconid2);  }  @override public int getitemcount() {     return data2.size(); }  class myviewholder extends recyclerview.viewholder{     textview title;     imageview icon;      public myviewholder(view itemview) {         super(itemview);         title = (textview) itemview.findviewbyid(r.id.to_buy_row_name);         icon = (imageview) itemview.findviewbyid(r.id.to_buy_row_image);     } } } 

there way this. here suggestion:

public class infoadapter extends     recyclerview.adapter<infoadapter.myviewholder> {     private layoutinflater inflater;    list<information> data = collections.emptylist() ;    activity activity;      public infoadapter(activity activity, list<information> data){        inflater = layoutinflater.from(activity);        this.data=data;        this.activity = activity;    }     public void delete(int position){        string removed = data.remove(position);        notifyitemremoved(position);        activity.yoursecondadapter.add(removed);    }     //rest of adapter class  } 

you may need additional adjusments.


Comments