2012-08-01 40 views
4

我正在做一些Android編碼,而且我經常做的事情是創建包含我的靜態列表項的plists。當我不得不做多層列表視圖,用戶深入查找信息時,這非常有幫助。 (例如,歐洲大陸 - >國家 - >城市)我所做的是代碼一列表視圖,它將自身的副本深入鑽取到數據樹中。在Android上的文件中加載包

但是,在Android上,我似乎無法找到任何類似於plist的東西,可以讓我完成上述操作(無需創建SQL數據庫)。

所以我最終做的是硬編碼一切......這不是我想要做的。 Android有很多xml資源可用,這就是我應該遵循的模式。

ArrayList<Bundle> data = new ArrayList<Bundle>(); 

Bundle infoHeader = new Bundle(); 
infoHeader.putInt(keyText,R.string.stay_informed); 
infoHeader.putInt(keyLayout,R.layout.main_header); 
data.add(infoHeader); 

Bundle readAction = new Bundle(); 
readAction.putInt(keyText,R.string.read); 
readAction.putInt(keySubtext, R.string.read_substr); 
readAction.putInt(keyLayout, R.layout.main_row_blue); 
// link to new ArrayList of items for the next level down 
data.add(readAction); 

我想要做的是以下(或它的東西非常相似):

<resources> 
<array name="main_list"> 
    <extra> 
     <string name="keyText" value="@string/stay_informed" /> 
     <layout name="keyLayout" value="@layout/main_header" /> 
    </extra> 
    <extra> 
     <string name="keyText" value="@string/read" /> 
     <string name="keySubtext" value="@string/read_substr" /> 
     <layout name="keyLayout" value="@layout/main_row_blue" /> 
     <!-- <string name="keyLink" value="@array/detail_list" /> Where detail_list has more Bundles --> 
    </extra> 
</array> 
</resource> 

而就加載在運行時捆綁的數組而不是它硬編碼到的應用程序。

所以。如何在Android上有效存儲/檢索NSDictionariesNSArray的等效項?

(我已經發現了android plist parser,但我想知道如何能在Android上做)

回答

0

好吧,我給這個一杆。我目前正在從Android到iOS(與你自己完全相反),所以我明白你在嘗試做什麼(我認爲)。 Java沒有「字典」,但它具有HashMaps(鍵/值配對 - 同樣的事情)。如果您真的想要,可以使用序列化將您的對象保存到可以打包在Android資產文件夾中的文件中。您隨後可以隨時閱讀(但不寫)這些信息。

這是一個鏈接,可以幫助您序列化Java對象。在Java中搜索HashMaps,你會看到很多東西。如果你打算在這個HashMap中放置許多不同類型的對象,請不要使用泛型。 (他們看起來像這樣<String, String>)。留下來做一個原始的HashMap。

要序列:(當你堅持下去的話) http://www.javadb.com/writing-objects-to-file-with-objectoutputstream

反序列化:(當你讀回) http://www.exampledepot.com/egs/java.io/DeserializeObj.html

另一種方式這或許是簡單的,是剛剛創建一個XML文件(就像你上面所做的那樣)並將其存儲在資產中。然後,您可以在應用程序啓動時使用XMLPullParser對其進行解析,並在應用程序的持續時間內將其存儲在內存中,但您將無法使用「@layout,@string」等。

+0

無法使用@字符串排序在使用本地化模型時會失敗。 – 2012-08-02 14:06:39

+0

此外,XMLPullParser似乎有點矯枉過正......我只需要鍵/值配對。 – 2012-08-02 14:08:28