android - Fragments inside ViewPager is not refreshing contents or its views -


mainactivity.java

public class mainactivity extends actionbaractivity {      toolbar toolbar;     viewpager pager;     viewpageradapter adapter;     slidingtablayout tabs;     private arraylist<string> mlanguagesarray = null;     int numboftabs;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);      if (savedinstancestate == null) {         bundle extras = getintent().getextras();         if (extras != null) {             mlanguagesarray = new arraylist<string>();             mlanguagesarray.addall(extras.getstringarraylist("languages"));             numboftabs = mlanguagesarray.size();         }      }          toolbar = (toolbar) findviewbyid(r.id.tool_bar);         setsupportactionbar(toolbar);         getsupportactionbar().seticon(r.drawable.ic_launcher);          adapter = new viewpageradapter(getsupportfragmentmanager(),                 mlanguagesarray, numboftabs, mainactivity.this);          pager = (viewpager) findviewbyid(r.id.pager);         pager.setadapter(adapter);          // assiging sliding tab layout view         tabs = (slidingtablayout) findviewbyid(r.id.tabs);          tabs.setviewpager(pager);         tabs.setonpagechangelistener(new viewpager.onpagechangelistener() {             @override             public void onpagescrollstatechanged(int arg0) {             }              @override             public void onpagescrolled(int arg0, float arg1, int arg2) {             }              @override             public void onpageselected(int arg0) {                 refreshlistinfragment(arg0);             }         });     }     protected void refreshlistinfragment(int position) {         string currentlanguage = mlanguagesarray.get(position);         fragmentmanager fm = getsupportfragmentmanager();         listviewfragment fragment = (listviewfragment) fm                 .findfragmentbyid(r.id.pager);         fragment.loadlistview(currentlanguage);     } } 

viewpageradapter.java

import java.util.arraylist; import android.content.context; import android.support.v4.app.fragment; import android.support.v4.app.fragmentmanager; import android.support.v4.app.fragmentstatepageradapter;  public class viewpageradapter extends fragmentstatepageradapter {     arraylist<string> titles;     int numboftabs;     context mcontext;      public viewpageradapter(fragmentmanager fm,             arraylist<string> mlanguagesarray, int mnumboftabsumb,             context context) {         super(fm);         titles = new arraylist<string>();         this.titles = mlanguagesarray;         this.numboftabs = mnumboftabsumb;         this.mcontext = context;      }     @override     public fragment getitem(int position) {         listviewfragment listfragment = new listviewfragment(mcontext);         return listfragment;     }      @override     public charsequence getpagetitle(int position) {         return titles.get(position);     }      @override     public int getcount() {         return numboftabs;     } } 

listviewfragment.java

import android.support.v4.app.fragment; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.button; import android.widget.listview; import android.widget.progressbar;  public class listviewfragment extends fragment {     progressbar progressbar;     listview list;     arraylist<rstore> mrstorelist = null;     radiolistadapter adapter;     context mcontext;     button tryagain;     string mcurrentlanguage = null;      @override     public view oncreateview(layoutinflater inflater, viewgroup container,             bundle savedinstancestate) {         view v = inflater.inflate(r.layout.listviewfragment, container, false);         progressbar = (progressbar) v.findviewbyid(r.id.progressbar);         list = (listview) v.findviewbyid(r.id.listview);         if (listviewfragment.this.ismenuvisible()) {             if (mrstorelist == null) {                 loadlistview("english");             }         }         return v;     }      public void loadlistview(final string currentlanguage) {         this.mcurrentlanguage = currentlanguage;         mrstorelist = new arraylist<rstore>();         new asynctask<void, void, string>() {             private string jsonstr;             @override             protected void onpreexecute() {                 list.setvisibility(view.gone);                 progressbar.setvisibility(view.visible);                 tryagain.setvisibility(view.gone);                 super.onpreexecute();             }             @override             protected string doinbackground(void... arg0) {                 try {                     string url = serviceurls.music_php;                     customhttpclient sh = new customhttpclient();                     jsonobject jsonobjpost = new jsonobject();                     jsonobjpost.put("languages", currentlanguage);                     jsonstr = sh.makeservicecall(url, customhttpclient.post,                             jsonobjpost.tostring());                     system.out.println("music_php_response " + jsonstr);                 } catch (exception e) {                     e.printstacktrace();                 }                 return jsonstr;             }              @override             protected void onpostexecute(string result) {                 if (result == null || result.trim().equalsignorecase("null")                         || result.trim().equalsignorecase("")) {                     progressbar.setvisibility(view.gone);                     super.onpostexecute(result);                     return;                 }                 try {                     string dummyjason = result.tostring();                     jsonobject jsonobject = new jsonobject(dummyjason);                     jsonarray jsonarray = jsonobject.getjsonarray("language");                     (int = 0; < jsonarray.length(); i++) {                         jsonobject obj = jsonarray.getjsonobject(i);                         string id = obj.getstring("id");                         string language = obj.getstring("language");                         string tittle = obj.getstring("tittle");                         string link = obj.getstring("link");                         rstore storecon = new rstore();                         storecon.setid(id);                         storecon.setlanguage(language);                         storecon.settitle(tittle);                         storecon.setlink(link);                         mrstorelist.add(storecon);                     }                 } catch (jsonexception e) {                     e.printstacktrace();                 }                  adapter = new radiolistadapter(mcontext, mrstorelist);                 list.setadapter(adapter);                 list.setvisibility(view.visible);                 progressbar.setvisibility(view.gone);                 super.onpostexecute(result);             }         }.executeonexecutor(asynctask.thread_pool_executor);     }     public listviewfragment(context context) {         this.mcontext = context;     } } 

i'm creating number of fragments dynamically using 1 fragment class called listviewfragment , setting view page adapter. listviewfragment contains listview populated dynamically service. code working fine problem is, datas inside fragments not refreshing or updating new values. in case listview showing loaded data in background service called , listview adapter updated updated listview not showing in fragment. please see code, , correct me if made mistake..thanks in advance

instead of calling method (currentlanguage) parameter in fragment activity using findfragmentbyid, i've passed (currentlanguage) bundle in viewpageradapter getitem() method , in listviewfragment class oncreateview got (currentlanguage) value using getarguments , passed (loadlistview) method. works fine , clean.

viewpageradapter.java

@override public fragment getitem(int position) {     bundle args = new bundle();     args.putstring("language", titles.get(position));     listviewfragment f = new listviewfragment(mcontext);     f.setarguments(args);     return f; }  

listviewfragment.java

private void getarugs() {     bundle args = getarguments();     mcurrentlanguage = args.getstring("language");     loadlistview(mcurrentlanguage); } 

Comments