0

Android Media Store からクエリした曲のリストを保存しようとしていますが、複数の列 (曲名、トラック パス、再生時間など) を保存する方法がわかりません。

現在、HashMap と ArrayList を使用して曲名と期間をリスト ビューに表示していますが、クエリからより多くの情報を保存したいと考えています。ある種の多次元ベクトル/コンテナを取得する方法に関するヒントはありますか? JSON obj/arrays を使用してみましたが、値を格納するたびに最後の値しか取得できません...

while (c.moveToNext()) {

                HashMap<String, String> temp = new HashMap<String, String>();

                temp.put("Title", c.getString(c
                        .getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME)));
                temp.put("Duration", Tools.stringOfTime(Long.parseLong(c.getString(c
                        .getColumnIndex(MediaStore.Audio.Media.DURATION)))));
                list.add(temp);

JSON試行...基本的に、各クエリ行を1つのjsonオブジェクトに追加し、それらのオブジェクトをjson配列に入れ続けましたが、何らかの理由で、リストから最後の値しか取得できず、ハッシュマップアプローチは正常に機能しますが、2つしか保存できません田畑..

// object = new JSONObject();
                // try {
                // object.put(
                // "Title",
                // c.getString(c
                // .getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME)));
                // object.put("Data", c.getString(c
                // .getColumnIndex(MediaStore.Audio.Media.DATA)));
                // object.put("Artist", c.getString(c
                // .getColumnIndex(MediaStore.Audio.Media.ARTIST)));
                // object.put("Album", c.getString(c
                // .getColumnIndex(MediaStore.Audio.Media.ALBUM)));
                // object.put("Duration", c.getString(c
                // .getColumnIndex(MediaStore.Audio.Media.DURATION)));
                // jarray.put(object);
                // } catch (JSONException e) {
                // e.printStackTrace();
                // }
                //
                // jlist.add(object);
                // }
                // try {
                // tv.setText(object.getString("Title"));
                // } catch (JSONException e) {
                // // TODO Auto-generated catch block
                // e.printStackTrace();
                // Log.d("SongsActivity", "Couldn't print json object");
                // }
4

2 に答える 2

0

簡単な調査を行ったところ、次のアクティビティでクエリを再度実行するという、このような質問に対するほとんどすべての回答が返ってきました。

もう 1 つの答えは、データ ハブとして機能するアプリケーション クラスを作成することでした。

于 2012-05-19T19:44:10.480 に答える
0

カーソル オブジェクトを Application クラスのフィールド変数に格納します。

のように: http://developer.android.com/reference/android/app/Application.html

于 2012-05-19T19:41:35.743 に答える