如何正确填充SQLite数据库中的android-viewFlow

时间:2011-08-29 11:01:25

标签: android sqlite populate

我正在尝试在我的应用中实现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而不是Android的兼容性viewPager的原因是我需要实现的标题指示器。

提前致谢!

现在,我在viewFlow.java中创建了一个新方法

public setSidebuffer(int sidebuffer) {
    mSideBuffer = sidebuffer;
    init();
}

在我的main_activity中,我正在设置viewFlow,我按如下方式调用方法:

viewFlow = (ViewFlow) findViewById(R.id.viewflow);
AndroidVersionAdapter adapter = new AndroidVersionAdapter(this);
viewFlow.setAdapter(adapter, 3);
viewFlow.setSidebuffer(adabter.getSize() / 2);    // THIS IS THE THING

1 个答案:

答案 0 :(得分:0)

我担心将sidebuffer设置为大于适配器中元素的数量可能会导致FC。在这种情况下,android-viewflow中存在一个我必须要研究的错误。无论如何,这样大的sidebuffer会导致你的适配器为每个元素创建一个View,从而消耗很多内存。适配器的整个想法是仅在需要时加载视图。

当您的目标是将完整的缓冲区大小设置为适配器的大小时,我认为您正在从错误的角度解决问题。这不是它的用途。以这样的方式实现适配器:当调用getView(...)时,适配器将从数据库中检索正确的行,必要时对视图进行膨胀,并返回填充的视图。如果此过程相对较快,您可能会坚持使用低侧缓冲区(如2或3),因为用户无法比将视图加载到视图流中更快地滚动。这有意义吗?

如果您更喜欢使用ViewPager,可能需要查看https://github.com/JakeWharton/Android-ViewPagerIndicator 该库源自android-viewflow中的工作,以启用ViewPager的指示器。也许android-viewflow将来也会支持它。