NPi*_*ike 6 android android-viewpager
我有一个带有ViewPager的FragmentActivity - 这个ViewPager包含三个ListView - 每个ListView都有自己独特的适配器(和唯一的数据集).
我想使用AsyncTaskLoader来填充这些适配器,但仅限于在ViewPager中选择给定视图时.
是否需要在activity的onCreate方法中初始化一个加载器?(下面的代码)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_foo);
getSupportLoaderManager().initLoader(0, null, this);
getSupportLoaderManager().initLoader(1, null, this);
getSupportLoaderManager().initLoader(2, null, this);
}
Run Code Online (Sandbox Code Playgroud)
或者可以交互式地调用initLoader(...),例如OnPageChangeListener.onPageSelected的监听器的结果?
mPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int newPage) {
getSupportLoaderManager().initLoader(newPage, null, this);
}
...
}
Run Code Online (Sandbox Code Playgroud)
如果用户可能只查看寻呼机中的第一个视图,我想避免必须预先执行3个耗时的加载器.
编辑: 或者让ViewPager为每个视图使用Fragment是一个更好的设计,每个片段都负责管理自己的加载器?
我不记得细节了,但至少对于兼容性库,如果你不调用initLoader()from onCreate(),加载器的生命周期就会变得混乱,所以你可能想调用它们 from onCreate()(可能在最新版本中修复了,还没有t 测试)。IIRC,片段仅使用活动的LoaderManager,因此加载器始终由活动管理。使用片段通常会让你的代码更干净,所以如果可能的话请迁移到片段。
| 归档时间: |
|
| 查看次数: |
2295 次 |
| 最近记录: |