笛里谁知壮士心,沙头空照征人骨。这篇文章主要讲述Android Viewpager保存数据和视图相关的知识,希望能为你提供帮助。
希望有人可以帮助我解决Viewpagers和保存数据方面的轻微问题/困惑。
问题:
滚动浏览四个视图时,第一个视图有两个微调器,两个显示字符串或选定项目的文本视图。如果我滚动到第三页并返回第二页,则第一个视图中的数据将丢失。 hense需要保存数据。
这将在下面列出的两个例程中完成吗? (最好的猜测是)如果是这样,需要说明什么样的命令?
码:
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
}@Override
public Parcelable saveState() {
return null;
}
EXTRA INFO:正在使用viewpager
public Object instantiateItem(View collection, int position) {
}
完整的方法列表如下:
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
}@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == ((View) arg1);
}@Override
public Parcelable saveState() {
return null;
}@Override
public void finishUpdate(View arg0) {
}@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
}@Override
public void startUpdate(View arg0) {
}
答案【Android Viewpager保存数据和视图】您可以修改ViewPager,而不是保存这些页面的状态,以便缓存所有页面,而不是销毁它们并在滚动时重新创建它们。
例如,如果您有4页:
ViewPager pager = (ViewPager) findViewById(R.id.viewpager);
pager.setOffscreenPageLimit(3);
// the number of "off screen" pages to keep loaded each side of the current page
pager.setAdapter(new PageAdapter(context));
现在你的网页将保持“活着”
但要小心这种技术,因为它会增加内存消耗。传递给setOffscreenPageLimit()的数字是要保留的当前页面每一侧的页面数。在这种情况下,我们总共有4页,所以最糟糕的情况是当我们处于页面集的最边缘时 - 我们有当前可见的页面,然后剩下的3页屏幕到一侧,因此保留在记忆中。但是,对于更大的数据集,它可能意味着7个页面保留在内存中(当前页面加上3个任意一侧)。
通常,更优化的解决方案是正确处理卸载和重新加载页面状态并重新呈现它们。
希望这可以帮助
推荐阅读
- 无法为Android模拟器选择系统映像[关闭]
- Android从主活动类中的非类布局访问Textview
- 是否可以让Jackson ObjectMapper在Spring Boot应用程序中遵守JAXB XML注释()
- 您可以将视频从Android流式传输到Google云端硬盘吗( [关闭])
- 不推荐使用Drive.DriveApi.getAppFolder(mGoogleApiClient)
- 我无法使用我的Android使用IPv4访问我的笔记本
- 如何制作Android自定义键盘()
- 在Angular App中的Obseable POST请求中使用switchMap
- 什么是app(overlayImage in xmlns:app =“http://schemas.android.com/apk/res-auto())