2013-04-01 18 views
1

我正在開發一個我需要非常快速完成的Android項目。在ListActivity中加載一個BIG SQLite數據庫

該應用程序的一個功能是加載SQLite數據庫內容並將其列入ListActivity內的ListView中。

該數據庫包含一些表格,其中2個表格非常大。

數據庫中的每個項目都有很多列,其中有我需要顯示至少2(名稱,價格),但最好是3

這似乎是一個很容易的事,因爲我需要的在這部分的應用程序中做的是讀取數據庫並列出它。我這樣做沒有任何問題,測試應用程序與小樣本數據庫。

在我的FIRST版本中,我使用光標獲取查詢,然後使用ArrayAdapter作爲列表的適配器,並且在查詢之後,我只是將光標從開始到結束循環,並且爲每個位置添加光標的內容適配器。

的onItemClickListener再次查詢數據庫,與其他參數(基本上我打開類),所以它清除適配器,然後循環光標和遍佈再加上自己的內容適配器。

該應用程序的工作就像一個魅力,但是當我用一個現實生活中,大數據庫(> 300MB),我突然接到我的應用程序採取非常長的顯示內容,有時甚至堵塞。

所以我做了一些研究,並開始使用SimpleCursorAdapter,它使用通常的參數(String [] from,int []等自動將光標的內容鏈接到ListView,其中我使用了android.R.layout .simple_list_item_2和android.R.id.text1和text2)。

問題是,加載的時間並沒有太多變化。

我在不同的網站和教程中遇到過一些建議的解決方案,其中大多數以各種方式使用AsyncTask類。我試着自己手動實現這個,但很難跟蹤多個線程,而且我失敗了。

教程都跟如何與內容提供商做到這一點,但我沒有發現任何明顯的布特我的具體情況:非常大的SQLite數據庫 - >讀的ListView。

現在我的腦海裏充滿了LoaderManager,LoaderAdapter等概念,所有這些都混淆在我的頭腦中。

任何人都可以請我提供一個完整的,漂亮的,乾淨的解決方案來做這個「簡單」的任務嗎?

再次:我想讀取一個BIG SQLiteDatabase並將其顯示在一個ListView中。我希望應用程序不要阻止。

我需要有一個成員函數,它作爲參數的查詢和ListActivity的環境和自身需要在顯示視圖的查詢結果的護理類。

請不要給我抽象的答案。我的時間不夠用了,現在我很困惑,我需要一個乾淨的完整解決方案。

你是我唯一的希望。

回答

3

如果查詢這樣的大型數據庫,它會帶TYM,你需要找到一個聰明的辦法,

就像限制你的數據庫查詢來獲取前10名或30的項目,然後保持,一旦達到最後一項查詢休息30個項目,並約束他們

請參閱本教程,它會教你如何在列表視圖

http://p-xr.com/android-tutorial-dynamicaly-load-more-items-to-the-listview-never-ending-list/

上面所列內容已經過期CHK這

0動態添加數據

http://mobile.dzone.com/news/android-tutorial-dynamicaly

+0

這似乎是一個聰明的解決方法,非常感謝,我一定會試試看! –

1

如果查詢大型數據庫,這需要時間來獲取數據,並顯示在列表視圖。所以最好在運行時填充數據。您可以使用Lazy Adapter概念來加載數據。此鏈接1可能對您有用。

感謝

+0

這似乎也很有用。謝謝! –

1

你也可以使用:

public class TodosOverviewActivity extends ListActivity implements 
    LoaderManager.LoaderCallbacks<Cursor> 

檢查這個link瞭解更多詳情。

相關問題