2012-05-19 26 views
0

我尝试存储的,我从Android的媒体存储查询的歌曲列表,但我不知道如何保存多列(即歌曲名称,轨道路径,持续时间等)存储查询值并在活动之间传递它们的提示?

我目前使用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"); 
       // } 
+0

由于所有数据已经​​存在,使用游标会出现什么问题?如果您在其他活动中需要它,请再次运行查询。 – Barak

+0

谢谢我想要实际做什么。我想让我的用户点击某些查询结果,然后我会用它们来制作一个播放列表。 – user772401

回答

0

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

对方回答是创建一个应用程序类充当数据集线器。

+0

谢谢你的帮助,我想出了该怎么做 – user772401