Llenar cada fragmento en ViewPager con otro objeto JSON sin cargar de nuevo

Tengo un ViewPager que tiene un Fragment que contiene un GridView en él
mi código funciona bien sólo cuando estoy página de desplazamiento con retraso y cada vez recuperar el contenido de Internet de nuevo
todo lo que quiero hacer es obtener cada página del contenido una vez y utilizarlo cuando el usuario desplazarse de una página
uno de mis problemas es que JSON downloding simultaneously cuando varias páginas se ha desplazado y no sé cómo almacenar mi gridview de contenido para el próximo uso que una página llamada

¿Existe una manera estándar de conquistar este problema?

aquí está PagerAdapter para mi ViewPager:

  public class ViewPagerAdapter extends FragmentStatePagerAdapter { String[] tabName; public ViewPagerAdapter(FragmentManager fm, String[] tabArray) { super(fm); this.tabName = new String[tabArray.length]; this.tabName = tabArray; } @Override public Fragment getItem(int position) { TabPageFragment tabPageFragment = new TabPageFragment(position); return tabPageFragment; } @Override public int getCount() { return tabName.length; } @Override public CharSequence getPageTitle(int position) { return tabName[position]; } } 

cada página de ViewPager utiliza esta clase para rellenar Fragmento:

 public class TabPageFragment extends Fragment { private GridView mgridview; // gridView inside Fragment private int tabPosition; private ArrayAdapterGridview arrayadapter; //adapter for my gridView public TabPageFragment(int tabposition) { this.tabPosition = tabposition; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mgridview = (GridView) rootView.findViewById(R.id.gridView2); View rootView = inflater.inflate(R.layout.fragment_grid_view, container,false); DownloadContentTab dct = new DownloadContentTab(); dct.execute(); return rootView; } // DownloadJSON AsyncTask private class DownloadContentTab extends AsyncTask<Void, Void, Integer> { @Override protected Integer doInBackground(Void... params) { JSONfunctions jsf = new JSONfunctions(); //this function retrieve's json for me JSONArray jsonarray = jsf.getJSONfromURL(myUrl); // this url is differ for each page String[] gridNameArray = new String[jsonarray.length()]; String[] gridPicArray = new String[jsonarray.length()]; for (int j = 0; j < jsonarray.length(); j++) { try { JSONObject jsonobject = jsonarray.getJSONObject(j); gridNameArray[j] = jsonobject.getString("title"); gridPicArray[j] = jsonobject.getString("pic"); } catch (JSONException e) { e.printStackTrace(); } } arrayadapter = new ArrayAdapterGridview(context, gridPicArray, gridNameArray); return 0; } @Override protected void onPostExecute(Integer result) { super.onPostExecute(result); mgridview.setAdapter(arrayadapter); } } } 

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.