2011-08-29 89 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