我正在编写一个应用程序,我需要使用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之后创建适配器。
这里有什么我想念的吗?