android - Accessing volley response with callback interfaces -


i m trying extract android volley response member variable of same class. used callback interfaces perform task :

public void getdata(mycustomlistener customlistener) {  jsonarrayrequest arrayrequest = new jsonarrayrequest(request.method.post, url,       response -> {               log.i("response",response.tostring());               customlistener.onresponse(completecart);                },       error -> log.i("volley_error", error.getmessage())) {       ... 

customerlistener interface:

public interface mycustomlistener {      public void onresponse(object response);      public void onerror(string error_response); } 

and inside oncreateview method of fragment :

getdata(new mycustomlistener() {       @override       public void onresponse(object response) {         completecartproitems.addall((list<completecartproitem>) response);                 }       @override        public void onerror(string error_response) {}             }); 

when put debug pointer @ completecartproitems.addall((list<completecartproitem>) response); response not empty completecartproitems arraylist shown empty.

enter image description here

variables :

enter image description here

i need pass completecartproitems adapter named cartitem_scrolleradapter has implemented recycleview.

this implementation inside oncreateview of fragment. right after calling getdata() method :

cart_item_scrolleradapter = new cartitem_scrolleradapter(getactivity(), completecartproitems); 

i put debug pointer inside constructor of cartitem_scrolleradapter well.

enter image description here

but shows list parameter of constructor empty. enter image description here

how pass not empty arraylist adapter given below ?? suggestions appreciable. thank you.

update

adapter class :

public class cartitem_scrolleradapter extends recyclerview.adapter<cartitem_scrolleradapter.cartitemviewholder> {      private layoutinflater inflater;     private list<completecartproitem> completecartproitems = new arraylist<>();     private context context;       public cartitem_scrolleradapter(context context,  list<completecartproitem> completecartproitems) {         this.inflater = layoutinflater.from(context);         this.context = context;         this.completecartproitems = completecartproitems;     }      @override     public cartitemviewholder oncreateviewholder(viewgroup parent, int viewtype) {         view view = inflater.inflate(r.layout.cart_item, parent, false);         cartitemviewholder cartitemviewholder = new cartitemviewholder(view);         return cartitemviewholder;     }      @override     public void onbindviewholder(cartitemviewholder holder, int position) {         completecartproitem proitem = completecartproitems.get(position);         cartdetails details = (cartdetails) myapplication.getandroidsession().getattribute("cart");         holder.cart_pro_name.settext(proitem.getp_name());         holder.cart_pro_price.settext("rs " + (proitem.getp_dscper() != 0 ? details.getdiscountprice(proitem.getp_price(), proitem.getp_dscper()) : proitem.getp_price()));         holder.cart_pro_qnty.settext(details.getqntyofproduct(proitem.getpid(), proitem.getp_size()) + "");         holder.cart_pro_size.settext(proitem.getp_size());         string image_url = "http://10.0.2.2:8080/ecommerceapp/" + proitem.getp_img();         picasso.with(context).load(image_url).into(holder.cart_pro_img);      }      @override     public int getitemcount() {         return completecartproitems != null ? completecartproitems.size() : 0;     }      class cartitemviewholder extends recyclerview.viewholder implements view.onclicklistener {         textview cart_pro_name;         textview cart_pro_price;         textview cart_pro_qnty;         textview cart_pro_size;         imageview cart_pro_img;         imagebutton cart_remove_btn;         button cart_change;          public cartitemviewholder(view itemview) {             super(itemview);             cart_pro_name = (textview) itemview.findviewbyid(r.id.cart_item_product_name);             cart_pro_price = (textview) itemview.findviewbyid(r.id.cart_item_product_price);             cart_pro_size = (textview) itemview.findviewbyid(r.id.cart_item_size);             cart_pro_img = (imageview) itemview.findviewbyid(r.id.cart_product_img);             cart_pro_qnty = (textview) itemview.findviewbyid(r.id.cart_item_qnty);             //===============================================================================================             cart_remove_btn = (imagebutton) itemview.findviewbyid(r.id.remove_item_btn);             cart_change = (button) itemview.findviewbyid(r.id.cart_item_change_btn);             cart_pro_img.setonclicklistener(this);             cart_remove_btn.setonclicklistener(this);             cart_change.setonclicklistener(this);          }          @override         public void onclick(view v) {          }     } } 

fragment :

public class cartfragment extends fragment {     private recyclerview cart_horizontal_scroller;     private cartitem_scrolleradapter cart_item_scrolleradapter;     private button purchase_button;     private list<completecartproitem> completecartproitems = new arraylist<>();       public cartfragment() {         // required empty public constructor     }      public void getdata(mycustomlistener<completecartproitem> customlistener) {         if (myapplication.getandroidsession().getattribute("cart") != null) {             log.i("cart_null", "not null");             requestqueue requestqueue = volleysingleton.getsinstance().getrequestqueue();             cartdetails cartdetails = (cartdetails) myapplication.getandroidsession().getattribute("cart");             copyonwritearraylist<cartitem> jsonsendarray = cartdetails.getshoppinglist();             final string jsonstring = new gson().tojson(jsonsendarray,                     new typetoken<copyonwritearraylist<cartitem>>() {                     }.gettype());              log.i("json_object", jsonstring);              string url = "http://10.0.2.2:8080/ecommerceapp/getallproductsaction";             jsonarrayrequest arrayrequest = new jsonarrayrequest(request.method.post, url,                     response -> {                         list<completecartproitem> completecart = new gson().fromjson(response.tostring(),                                 new typetoken<list<completecartproitem>>() {                                 }.gettype());                         log.i("response", completecart.get(0).getp_name());                         customlistener.onresponse(completecart);                      }, error -> log.i("volley_error", error.getmessage())) {                 @override                 public map<string, string> getheaders() throws authfailureerror {                     map<string, string> params = new hashmap<>();                     params.put("content-type", "application/json");                     params.put("cartlist", jsonstring);                     return params;                 }              };             arrayrequest.setretrypolicy(new retrypolicy() {                 @override                 public int getcurrenttimeout() {                     return 5000;                 }                  @override                 public int getcurrentretrycount() {                     return 5000;                 }                  @override                 public void retry(volleyerror error) throws volleyerror {                  }             });             requestqueue.add(arrayrequest);         } else {             log.i("cart_null", "null");         }       }       @override     public view oncreateview(layoutinflater inflater, viewgroup container,                              bundle savedinstancestate) {         // inflate layout fragment          view view = inflater.inflate(r.layout.fragment_cart, container, false);         cart_horizontal_scroller = (recyclerview) view.findviewbyid(r.id.horizontal_scrollview_cart_items);          getdata(new mycustomlistener<completecartproitem>() {              @override             public void onresponse(list<completecartproitem> response) {                 completecartproitems.addall(response);                 //completecartproitems.add(new completecartproitem(1, 2340.0, "extra orient top", "orient", "", "s", 5));                 log.i("check", completecartproitems.get(0).getp_name());              }              @override             public void onerror(string error_response) {              }         });          cart_item_scrolleradapter = new cartitem_scrolleradapter(getactivity(), completecartproitems);          cart_horizontal_scroller.setadapter(cart_item_scrolleradapter);         cart_horizontal_scroller.setlayoutmanager(new linearlayoutmanager(getactivity(),                 linearlayoutmanager.horizontal, false));         purchase_button = (button) view.findviewbyid(r.id.purchase_btn);         purchase_button.setonclicklistener(v -> {             toast t = toast.maketext(getactivity(), "worked", toast.length_long);             t.show();         });         return view;     }   } 

ok. in reference comment above, writing steps should try since not have clear picture of might wrong.

let's start mycustomlistener. not know why setting response type object. if use in multiple requests can modify following generics

public interface mycustomlistener<t> {      public void onresponse(t response);      public void onerror(string error_response); } 

then use when callback needed

getdata(new mycustomlistener<list<completecartproitem>>() {       @override       public void onresponse(list<completecartproitem> response) {         completecartproitems.addall(response);       }       @override        public void onerror(string error_response) {          //handle error        } }); 

also make sure not re-initialising completecartproitems elsewhere after callback.

not sure if following fix issue make sure callback executed in ui thread, too.


Comments

Popular posts from this blog

java - Run spring boot application error: Cannot instantiate interface org.springframework.context.ApplicationListener -

python - pip wont install .WHL files -

Excel VBA "Microsoft Windows Common Controls 6.0 (SP6)" Location Changes -