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 数组中,但由于某种原因,我只能从列表中获取最后一个值,因为 hashmap 方法工作正常但只能存储 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

将游标对象存储在 Application 类字段变量中。

喜欢:http: //developer.android.com/reference/android/app/Application.html

于 2012-05-19T19:41:35.743 回答
0

做了一些快速的研究,我看到的几乎每一个这样的问题的答案都会返回:在下一个活动中再次运行查询。

另一个答案是创建一个应用程序类来充当数据中心。

于 2012-05-19T19:44:10.480 回答