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?
- ConstraintLayout forma de contenido cambiado si se desplaza
- Rellenar Listview de JSON
- Lectura de Json String usando Gson resultados error "no un JSON Array"
- Vaciar RecyclerView utilizando datos obtenidos de parse.com
- Finalización de la construcción de objetos después de la deserialización de GSON
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); } } }
- Retrofit: Se esperaba BEGIN_OBJECT pero era BEGIN_ARRAY
- Retrofit con un servicio de la vieja escuela
- Cómo recuperar array multidimensional usando json en android
- Gson convierte una matriz de objetos de datos en json - Android
- E / Volley: BasicNetwork.performRequest: Código de respuesta inesperado 307 para url
- Cómo publicar el progreso para el análisis de archivos json de gran tamaño con GSON
- Almacenamiento de datos de Android, Cuándo utilizar SqlLite y cuándo usar JSON, alternativas de Linq
- Org.json.JSONArray no se puede convertir a JSONObject
- Spinner onItemSelected no se llama usando Marsmallow
- Robolectric visible () "W / InputEventReceiver: Se ha intentado consumir eventos de entrada agrupados pero el receptor de eventos de entrada ya se ha eliminado."