2011-04-28 46 views
1

如果這個問題太寬泛或太「它取決於」,我很抱歉。尋求指導:數據存儲決策

基本上,我需要做出關於如何在我的應用程序中存儲和訪問數據的決定。該應用程序非常像flashcards;卡的「正面」呈現主題,「背面」呈現細節/解釋。起初,它似乎像一個SQLite數據庫將最適合這種類型的結構(也許它確實是,我只是不知道),因爲數據是靜態的,這種模式適用於數據庫的行和列結構。 (順便說一下,截至目前,我使用openCSV來解析包含我的卡片的csv文件,認爲它比SQLite更容易...)

我的問題(最後)是我希望能夠顯示圖像對於一些數據項目。例如,某些卡片應顯示相應的圖像。這是我可以用SQLite db做些什麼?就像有一列存儲圖像的路徑....?也許我所要求的是非常基本的,但是我沒有看到太多的例子來真正瞭解那裏的設計選項。

我也可能會對如何根據是否有可用的圖像動態更改視圖感到困惑。也許這只是一個動態創建imageview的問題,其源代碼是db指向的文件...

總之,我真的很感激一些關於如何獲取和顯示文本數據以及圖像的指導他們是可用的,無論是在SQLite或其他方式。

謝謝!

+0

爲什麼目錄中的命名文件不起作用?太多?未排序?你需要每個圖像有多個「列」數據?圖像名稱可能需要'/'或'\ 0'嗎?簡而言之:你對這個數據庫有什麼要求? – sarnold 2011-04-28 23:25:55

回答

0

如果所有這些數據都與應用程序一起發貨,我建議只保留所有存儲爲資源的數據。您可以爲主題和細節設置字符串數組,並且可以將圖像存儲爲可繪製資源或資源。在後一種情況下,您可以將資產名稱存儲爲另一個字符串數組資源。 (在前一種情況下,您必須從每張牌製作一張地圖到資源標識符,不幸的是,這是一個Android資源架構不會發光的區域。)

如果要使用SQLite,它有BLOB字段,您可以在其中存儲圖像,或者可以存儲圖像資源標識符的int字段。查看可搜索的詞典示例項目,瞭解如何從資源數據構建S​​QLite數據庫。

+0

非常感謝@Ted。我很欣賞這些反饋。我有點困惑。您建議在我的strings.xml中對主題和細節進行硬編碼,每個主題/細節對都是一個新字符串?你確實說過數組,所以你prolly意味着你所說的;)你可以舉一個存儲資產名稱爲字符串數組資源的例子嗎? – LuxuryMode 2011-04-28 23:33:04

+0

這裏描述了聲明字符串數組資源的語法(http://developer.android.com/guide/topics/resources/string-resource.html#StringArray)。我想到了平行陣列,一個用於卡片的前端,一個用於後端,另一個用於圖像(缺少圖像的空字符串)。更好的方法是使用可繪製圖像ID的[typed array](http://developer.android.com/guide/topics/resources/more-resources.html#TypedArray)。 – 2011-04-29 02:36:25

+0

如果我使用了一個打印陣列,我將如何與相應的卡(正面和背面)匹配圖像? – LuxuryMode 2011-04-29 07:00:33

0

對不起,但這真的是一個'它取決於'種話題。

除非你存儲大量的數據行(大約10 000),否則XML文件將是你最好的選擇。在我最近編寫的Train Timetable應用程序中,我們使用XML SAX解析器將14 000個記錄數據庫加載到內存中,並且在HTC Hero上花費的時間不超過2秒,所以即使對於大型數據庫來說也相當快。

只有在您想要使用數據庫結構附帶的關係時,SQLite選項纔是可取的。處理大量的行更好,但處理圖像時更糟糕。

由於你的閃存卡不是關係型的,我會推薦一個xml文件,使用xmlSax解析器和資產文件夾中的圖像文件夾。你甚至可以通過pngCrunch運行圖像來節省一些空間。

XML非常靈活,下面是你的xml文件的樣子。查看http://www.w3schools.com/schema/瞭解更多關於編寫xml架構的信息。

<?xml version="1.0" encoding="UTF-8"?> 
<cards> 
    <card title="card 1" topic="atopic" image="image file name"> 
    <front>Lots of text</front> 
    <back>Lots of text</back> 
    </card> 
    <card ..> 
    .. 
    </card> 
</cards> 
+0

太棒了。這聽起來很不錯!謝謝!所以,只需創建我自己的XML文件,主題,卡片的正面和背面等。在我的XML中,我只是指向我的資產文件夾中的圖像? – LuxuryMode 2011-04-28 23:37:01

+0

欣賞編輯。謝謝艾倫! – LuxuryMode 2011-04-29 12:31:26