ViewPager.setOffscreenPageLimit无效

时间:2014-11-18 08:36:56

标签: android android-viewpager expandablelistview fragmentstatepageradapter

我正在编写一个应用程序,我需要使用FragmentStatePagerAdapter在页面查看器中显示可扩展列表视图。

我知道ViewPager页面缓存限制,我们可以使用PageViewer.OffscreenPageLimit()设置默认为一。

在此我观察,在展开第1页列表后,它将保持不变,即使我访问7-10页并返回。并且可能是因为它在滚动时ViewPager变得很重。

页面查看器实施:

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

其中dataCardList是和包含Fragment类对象的ArrayList;

dataCardList = new ArrayList<DataCardSlidePageFragment>(); 我担心这个电话,因为有可能视图寻呼机可能需要显示500多个页面... omg在这种情况下会是什么。任何想法是否只能使用max(比如5,2左,1中,2右)而不是在列表中维护500个片段。

这是来自DataCardSlidePageFragment片段的异步任务执行:

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
        }
    }

并在http://www.mysamplecode.com/2012/10/android-expandablelistview-example.html之后创建适配器。

这里有什么我想念的吗?

0 个答案:

没有答案