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
Post a Comment