2012-05-19 55 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