我正在尝试在我的应用程序中实现android-viewFlow (https://github.com/pakerfeldt/android-viewflow),然而,我很难正确地填充每个页面。
问题是我有SQLite数据库,并且我需要一些视图来匹配与我的查询匹配的行数(通常在9到21之间),并且每个视图都应该显示来自该行的值。
在viewFlow中,有一个"sidebuffer“字段,它会根据这个"sidebuffer”的值来加载视图的数量。那么,如何从SQLite填充适配器并强制"sidebuffer“匹配我的行数呢?(如果"sidebuffer = 3",则加载的视图将为2*3+ 1,如果为5,则加载2*5+ 1)。
即使我永远不会有那么多视图要显示,硬编码"sidebuffer = 100“有什么缺点吗?
我之所以使用viewFlow,而不是安卓的兼容性viewPager,是因为我需要实现的标题指示器。
提前感谢!
现在,我已经在viewFlow.java中创建了一个新方法
public setSidebuffer(int sidebuffer) {
mSideBuffer = sidebuffer;
init();
}在我设置viewFlow的main_activity中,我按如下方式调用该方法:
viewFlow = (ViewFlow) findViewById(R.id.viewflow);
AndroidVersionAdapter adapter = new AndroidVersionAdapter(this);
viewFlow.setAdapter(adapter, 3);
viewFlow.setSidebuffer(adabter.getSize() / 2); // THIS IS THE THING发布于 2011-08-30 18:37:31
我担心设置一个大于适配器中元素数量的辅助缓冲区可能会导致FC。在这种情况下,android-viewflow中有一个bug,我必须调查一下。无论如何,如此大的副缓冲区将导致您的适配器为每个元素创建一个View,从而消耗,潜在地大量的内存。适配器的整个思想是仅在需要时加载视图。
我认为,当您的目标是将整个缓冲区大小设置为适配器的大小时,您从错误的角度处理问题。这不是它的用法。以这样的方式实现适配器:当getView(...)时,适配器将从数据库中检索正确的行,并在必要时膨胀视图,然后返回填充的视图。如果此过程相对较快,您可能会坚持使用较低的辅助缓冲区,例如2或3,因为用户滚动的速度不会快于将视图加载到viewflow中所需的速度。这有意义吗?
如果你更喜欢使用ViewPager,你可能想看看https://github.com/JakeWharton/Android-ViewPagerIndicator这个库是从android-viewflow中的工作中派生出来的,它为ViewPager启用指示器。也许android-viewflow在未来也会支持这一点。
https://stackoverflow.com/questions/7229214
复制相似问题