如何从存储在
中的“raw”文件夹中存储这些音频文件int[] lessonClips = { R.raw.button_a, R.raw.button_2, R.raw.button_3,
R.raw.button_4, R.raw.button_5, R.raw.button_6 };
进入一个带有HashMap参数的ArrayList ArrayList< HashMap< ?>>
我正在使用的课程有以下方法
/ ** 从sdcard读取所有mp3文件的功能 并将详细信息存储在ArrayList中 * * /
public ArrayList<HashMap<String, String>> getPlayList(){
File home = new File(new String("/sdcard/audio"));
if (home.listFiles(new FileExtensionFilter()).length > 0) {
for (File file : home.listFiles(new FileExtensionFilter())) {
HashMap<String, String> song = new HashMap<String, String>();
song.put("songTitle", file.getName().substring(0, (file.getName().length() - 4)));
song.put("songPath", file.getPath());
// Adding each song to SongList
songsList.add(song);
}
}
// return songs list array
return songsList;
}
所以我试图将这些音频文件转换为字符串,以便在该方法中使用它们
答案 0 :(得分:0)
我完全赞同Jrom和10s。为什么要使用HashMap。 使用ArrayList。
答案 1 :(得分:0)
现在我明白你要做什么了。我会为你提供另一种解决方案。尽管使用这样的HashMap
,但尝试为您的代码实现这一点对未来的更改更为具体。
使用属性实现歌曲对象:
public class Song {
String title;
String path;
int resource; //R.raw.*
//setters and getters
}
然后你有了这个对象:ArrayList<HashMap<int, Song>>;
通过这种方式,您可以在一个对象中获得所有歌曲详细信息,您可以按照自己的方式制作不同的播放列表,而在HashMap中,您可以为每首歌曲创建一个ID,以便您轻松访问它们。
如果您不关心为每首歌曲提供ID,您可以这样做:ArrayList<ArrayList<Song>>
。
将来您可能需要在歌曲中添加艺术家或其他内容。这对于此类更改以及保持代码清洁的最佳方式更加健壮。
答案 2 :(得分:0)
这就是我的想法。从您的代码中,您似乎只是从特定目录中提取mp3文件。这意味着您只有一个播放列表。如果是这种情况,我会像这样存储歌曲的名称:
ArrayList<String> songList;
或者喜欢:
ArrayList<Song> songList; //10s' suggestion.
关于你原来的问题,你可以尝试这样的事情:
for(int x = 0; x < lessonClips.length; x++)
{
songList.add(getApplicationContext().getResources().
getResourceEntryName(lessonClips[x]);
}