我试图存储我从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");
// }
答案 0 :(得分:0)
将光标对象存储在Application类字段变量中。
赞:http://developer.android.com/reference/android/app/Application.html
答案 1 :(得分:0)
做了一些快速的研究,几乎我看到这样的问题的每个答案都回到:在下一个活动中再次运行查询。
另一个答案是创建一个应用程序类来充当数据中心。