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?