有关存储查询值并在活动之间传递的提示?

时间:2012-05-19 19:25:36

标签: java android json

我试图存储我从Android Media Store查询的歌曲列表,但我不确定如何保存多个列(即歌曲名称,曲目路径,持续时间等等)。

我目前使用HashMap和ArrayList在列表视图中显示歌曲名称和持续时间,但我想从查询中存储更多信息。关于如何获得某种多维向量/容器的任何提示?我尝试使用JSON obj /数组,但每次我在其中存储值时,我只能得到最后一个...

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");
                // }

2 个答案:

答案 0 :(得分:0)

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

赞:http://developer.android.com/reference/android/app/Application.html

答案 1 :(得分:0)

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

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