0

私は2つの画面を持つプロジェクトに取り組んでいます。最初の画面には、過去最高の売上を記録したすべての映画を含むListViewが含まれています。各行には次のものが含まれます。

a。)映画のタイトルb。)収益c。)リリースされた年

すべてがXMLで配置され、各ムービーは、適切なコーディング内のforループによってアクセスされるstrings.xmlリソースのstring-arrayで宣言されます。メニューボタンをクリックすると、別のエントリを追加するかどうかを選択できます。これをクリックすると、3つの空の編集テキストフィールドを含む別の画面にユーザーがリダイレクトされます。これらはそれぞれ映画のタイトル、収益、リリース年に対応しており、ユーザーは映画を入力できます。

文字列.xml(長すぎるためスニペット)は次のとおりです。

 <string-array name="title_array">
        <item>Avatar</item>
        <item>Titanic</item>
        <item>The Lord of the Rings: The Return of the King</item>
        <item>Pirates of the Caribbean: Dead Mans Chest</item>
        <item>Toy Story 3</item>
        <item>Pirates of the Caribbean: On Stranger Tides</item>
    </string-array>

対応するgross-arrayとyear-arrayもあると仮定します。

これが適切なforループです(カスタムアダプタ経由):

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        String[] titleList = getResources().getStringArray(R.array.title_array);
        String[] grossList = getResources().getStringArray(R.array.gross_array);
        String[] dateList = getResources().getStringArray(R.array.date_array);

        ArrayList<Lab6_082588FetchDetails> results = new   ArrayList<Lab6_082588FetchDetails>();

    for (int i = 0; i < titleList.length; i++) {
        Lab6_082588FetchDetails sr = new Lab6_082588FetchDetails();
        sr.setTitle(titleList[i]);
        sr.setGross(grossList[i]);
        sr.setDate(dateList[i]);
        results.add(sr);
    }

私の問題は、確かに、別のエントリを追加してset notifyDataSetChanged();を使用できることです。ただし、ユーザーがアプリケーションを終了して再度開いた場合、これは新しいエントリを「永続的に」保存しません。私の仮説では、おそらく.xml文字列リソースファイルをコードで変更できると思いますが、その方法がわかりません。

4

2 に答える 2

0

ムービー情報をSQLiteデータベースに保存した方がよいでしょう。

その後、あなたと一緒に使用することができCursorAdapterますListView

于 2012-08-16T11:45:36.533 に答える
0

リソース ファイルを変更することはできません。データを永続化するには、他の方法を使用する必要があります。

これには SQLite またはファイルを使用します。

まだ SQLite のレッスンに達していないので、ファイルを試すことができます。ファイルでない場合は、共有設定を試すことができます。

于 2012-08-16T12:42:14.230 に答える