Заполнить каждый фрагмент в ViewPager с другим объектом JSON без загрузки снова

У меня есть ViewPager это имеет Fragment который содержит GridView в него
мой код работает нормально только когда я прокручиваю страницу с задержкой и каждый раз снова получаю контент из интернета
все, что я хочу сделать, это просто получить содержимое каждой страницы один раз и использовать его, когда пользователь прокручивает страницу
одна из моих проблем заключается в том, что JSON simultaneously когда прокручивается несколько страниц, и я не знаю, как сохранить содержимое моего gridview для следующего использования, которое называется страницей


Есть ли стандартный способ победить эту проблему?


вот PagerAdapter для моего 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];
    }
}

каждая страница ViewPager использует этот класс для заполнения фрагмента:

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);

    }


   }    
 }

0 ответов

Другие вопросы по тегам