multithreading - Asynchronously add views to fragment in Android -


i trying create fragment @ beginning show progressbar, other thread call function bring information (the information brought remote server - takes few seconds) populate views added fragment. have tried add views fragment got exception can't change ui on threads not on main thread. run on ui thread, here problem ui stacked until moment information brought server.

here code:

public class mainsalepage extends sherlockfragment  {     protected view manesalepage;     protected list<saleobj> salelist;     protected int numberofsalesonscreen;     protected linearlayout saleconteiner;       @override     public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate)      {         manesalepage = inflater.inflate(r.layout.main_page_fragment, container, false);         numberofsalesonscreen = 0;         saleconteiner = (linearlayout) manesalepage.findviewbyid(r.id.salescontainer);           getactivity().runonuithread(new runnable()         {             @override             public void run()              {                 saleservice saleservice = new saleservice();                 salelist = saleservice.getnextsales(numberofsalesonscreen); //the operation takes time.                 for(int = 0; < salelist.size(); i++)                 {                     salerow salerow = new salerow(getactivity());                     salerow.populatewith(salelist.get(i));                      saleconteiner.addview(salerow);                 }             }         });          return manesalepage;     }  } 

how can show fragment , not stack ui till point data server?

thanks!

try work, not cleanest solution, correct code not write new 1 sketch can see did make mistake

edit: in chat vlad solution guide helped him

@override     public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate)      {         manesalepage = inflater.inflate(r.layout.main_page_fragment, container, false);         manesalepage.postdelayed(new runnable() {              @override             public void run() {                 addcontainer();             }         }                        }, 1000);         return manesalepage;     }          private void addcontainer(){             numberofsalesonscreen = 0;             saleconteiner = (linearlayout)       manesalepage.findviewbyid(r.id.salescontainer);             saleservice saleservice = new saleservice();         salelist = saleservice.getnextsales(numberofsalesonscreen); //the operation takes time.         for(int = 0; < salelist.size(); i++)         {             getactivity().runonuithread(new runnable()             {                 @override                 public void run()                  {                                                salerow salerow = new salerow(getactivity());                         salerow.populatewith(salelist.get(i));                           saleconteiner.addview(salerow);                  }             });         }     } 

you sending of them @ once, , way send 1 one

edit: don't forget going create n = salelist.size() threads @ once.

hope helps , enjoy work


Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -