4

私はいくつかの Android コーディングを行うことに移行しています。私が頻繁に行うことは、静的リスト項目を含む plist を作成することです。これは、ユーザーがドリルダウンして情報を検索する多層リスト ビューを作成する必要がある場合に非常に役立ちます。(例: Continent --> Country --> City ) 次に、コード 1 のリスト ビューを作成して、それ自体のコピーをプッシュし、データ ツリーをさらに深く掘り下げます。

ただし、Android では、(SQL データベースを作成せずに) 上記を実行できる plist に相当するものを見つけることができないようです。

だから私がやったことは、すべてをハードコーディングすることです...これは私がやりたいことではありません。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で aNSArrayに相当するものを効率的に保存/取得するにはどうすればよいですか?NSDictionaries

( Android plist parserを発見しましたが、Android でどのように実行できるか知りたいです)

4

1 に答える 1

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

おそらくもっと簡単なもう 1 つの方法は、(上記で行ったように) XML ファイルを作成し、それをアセットに保存することです。「@layout、@string」などは使用できませんが、アプリの起動時に XMLPullParser で解析し、アプリの実行中はメモリに保存できます。

于 2012-08-02T00:20:15.527 に答える