2011-08-29 53 views
0

我想在我的应用中实现android-viewFlow(https://github.com/pakerfeldt/android-viewflow),但是,我很难正确填充每个页面。如何从SQLite数据库正确填充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 

回答

0

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

我认为当您将目标设置为适配器大小的完整缓冲区大小时,您会从错误的角度来解决问题。这并非如此。以调用getView(...)的方式实现适配器,适配器将从数据库中检索正确的行,在必要时扩充视图并返回已填充的视图。如果此过程相对较快,则可能会使用较低的侧缓冲区(例如2或3),因为用户无法将视图加载视图的速度加快。那有意义吗?

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

+0

感谢您的帮助。我只是想知道为什么,如果我有10行例如显示和侧缓冲区3,第8视图将以某种方式有位置0和9有1等..所以只有修复,我可以上来是加载那些都一起看。 – micadelli

+0

是的,经过大量的搜索后,我发现你所建议的同一个杰克·沃顿的图书馆......并且发现它实际上非常好。尽管我不知道如何让Eclipse接受它作为外部库。甚至不会接受导入它/示例项目...所以我不得不将文件复制到我的项目文件夹 – micadelli

+0

你在说什么索引/位置? ViewFlow跟踪两个索引。一个用于适配器内的位置,另一个用于加载视图列表中的索引。加载视图列表的大小通常是2 * sidebuffer + 1. – pakerfeldt