ViewPager.setOffscreenPageLimit not working

1.9k Views Asked by At

I am writing an application where I need to show Expandable List View inside Page Viewer using FragmentStatePagerAdapter.

I am aware about ViewPager page cache limit which we can set using PageViewer.OffscreenPageLimit() which is default as one.

Here I observe, after expand page-1 list it will remain as it is even I visit 7-10 page and come back. and might be because of it ViewPager become heavy while scrolling.

Page Viewer implementation:

private class DataCardSlidePagerAdapter extends FragmentStatePagerAdapter {

        public DataCardSlidePagerAdapter(FragmentManager fm) {
            super(fm);

            for (int i = 0; i < NUM_PAGES; i++) {
                DataCardSlidePageFragment fragment = new DataCardSlidePageFragment();
                Bundle bundle = new Bundle();
                bundle.putInt("page", i);
                fragment.setArguments(bundle);
                dataCardList.add(fragment);
            }
        }

        @Override
        public Fragment getItem(int position) {
            return dataCardList.get(position);
        }

        @Override
        public int getCount() {
            return NUM_PAGES;
        }
    }

where dataCardList is and ArrayList that hold Fragment class object ;

dataCardList = new ArrayList<DataCardSlidePageFragment>(); I am worrying about this call since there are possibility view pager may need to show 500+ page...omg what will be in that case. Any idea if can only use max(say 5, 2 left, 1 centre, 2 right) instead to maintain 500 fragment in list.

This is Async Task Execution From DataCardSlidePageFragment fragment:

class AsyncProcessData extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();

            dateMap.clear();
            deptList.clear();
        }

        @Override
        protected Void doInBackground(Void... params) {
            loadData();
            return null;
        }


        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);

            //create the adapter by passing your ArrayList data
            cardAdapter = new VitalCardAdapter(parentActivity, deptList);
            //attach the adapter to the list
            expandableList.setAdapter(vitalCardAdapter);

            expandGroup(0); // expand first group
        }
    }

and following http://www.mysamplecode.com/2012/10/android-expandablelistview-example.html to create adapter.

Is there anything I am missing here?

0

There are 0 best solutions below