android - Please suggest me on proper usage of notifyDataSetChanged() -


i'm using view pager swiping tab layouts. , i'm displaying list view of data using custom adapter. , onclick of list view have list view detail activity i'm displaying data in more detail. in these detail activity i'm performing changes data(some post method). after create instance of customadapter class , call notifydatasetchanged() in order refresh list view. problem on here list view times refreshes , times there delay of seconds. so, can suggest me proper usage of list view , changes needs done in order refresh list view whenever post method performed. code fragment class:

private void showjsondata(string response) {      try {         string serviceid = loggedinuserstore.getloggedinserviceid(getcontext());         list<complaint> userlist = new arraylist<>(); //arraylist of type user(pojo class)         jsonarray jsonarray = new jsonarray(response);          (int = 0; < jsonarray.length(); i++) {             if (serviceid.equals(jsonarray.getjsonobject(i).getstring("serviceid"))) {                 if (jsonarray.getjsonobject(i).getstring("callstatusid").equalsignorecase("1")) {                     userlist.add(0, complaint.fromjson(jsonarray.getjsonobject(i))); //                 }             }          }          assignadapter = new assignadapter(getactivity(), userlist);         listview.setadapter(assignadapter);         listview.invalidateviews();         assignadapter.notifydatasetchanged();      } catch (jsonexception e) {         e.printstacktrace();     } 

}

my custom adapter class public class assignadapter extends baseadapter implements filterable { list<complaint> ticket = new arraylist<>(); private context context; string ticketno, complaint, raisedate; complaint user; list<complaint> temporarylist = new arraylist<>();  /*string status, priority;*/  public assignadapter(context context, list<complaint> ticket) {     this.context = context;     this.ticket = ticket;     this.temporarylist = ticket; }  @override public int getcount() {     return temporarylist.size(); }  @override public object getitem(int position) {     return temporarylist.get(position); }  @override public long getitemid(int position) {     return position; }  public class viewholderitem {     textview ticketnumbertext, complaintnametext, raiseddatetext; }  //set layout fragment , return it. @override public view getview(final int position, view convertview, viewgroup parent) {      viewholderitem holder;     if (convertview == null) {         layoutinflater inflater = (layoutinflater) context.getsystemservice(context.layout_inflater_service);         convertview = inflater.inflate(r.layout.custom_list_view, null, true);          holder = new viewholderitem();         holder.ticketnumbertext = (textview) convertview.findviewbyid(r.id.ticketidsupervisor);         holder.complaintnametext = (textview) convertview.findviewbyid(r.id.complaintnamesupervisor);         convertview.settag(holder);     } else {         holder = (viewholderitem) convertview.gettag();     }      user = temporarylist.get(position);     if (user != null) {         //get ticket number         typeface custom_font = typeface.createfromasset(context.getassets(), "fonts/droidserif.ttf");         ticketno = temporarylist.get(position).getticketnumber();         holder.ticketnumbertext.settext(ticketno);         holder.ticketnumbertext.settag("ticketnumber");         holder.ticketnumbertext.settypeface(custom_font);           //get complaint name         complaint = temporarylist.get(position).getcomplaintdetails();         holder.complaintnametext.settext(complaint);         holder.complaintnametext.settag("complaint");         holder.complaintnametext.settypeface(custom_font);      }     convertview.setonclicklistener(new view.onclicklistener() {         @override         public void onclick(view v) {             intent = new intent(context.getapplicationcontext(), complaintdetailssupervisor.class);             i.putextra("complaint name", temporarylist.get(position).getcomplaintdetails());             i.putextra("raised date", temporarylist.get(position).getraiseddate().substring(0, 10));             context.startactivity(i);         }     });     notifydatasetchanged();     return convertview; } public void notifydatasetchanged() {     super.notifydatasetchanged(); } 

}

my list view detail activity class

 dialogbuttonok.setonclicklistener(new view.onclicklistener() {                     @override                     public void onclick(view v) {                         try {                             assigncomplaint();                             al.remove(position);                              assignadapter assignadapter = new assignadapter(getapplicationcontext(), al);                             assignadapter.notifydatasetchanged();                              complaintdetailssupervisor.this.finish();                           } catch (jsonexception e) {                             e.printstacktrace();                         }                     }                 });                  dialogbuttonno.setonclicklistener(new view.onclicklistener() {                     @override                     public void onclick(view v) {                         dialog.dismiss();                     }                 });                  dialog.show();             }         }     });   }  public void assigncomplaint() throws jsonexception {     //my custom method... } 

in list view detail activity class i'm doing

al.remove(position); assignadapter assignadapter = new assignadapter(getapplicationcontext(), al); assignadapter.notifydatasetchanged(); complaintdetailssupervisor.this.finish(); 

removing position of list view , calling adapter. works fine don't know why not refreshes..may when list view has single item not refreshes immediately.

you creating new adapter , calling notifydatasetchanged on have not called setadapter new adapter parameter, hence why list ist not refreshed.

you need call

setadapter(assignadapter) 

or reuse existing assignadapter , call notifydatasetchanged() on it.


Comments

Popular posts from this blog

javascript - How to get current YouTube IDs via iMacros? -

c# - Maintaining a program folder in program files out of date? -

emulation - Android map show my location didn't work -