【发布时间】:2014-07-16 20:48:05
【问题描述】:
所以我正在为音乐播放器制作一个示例播放列表,并且我正在尝试获取艺术家姓名和曲目标题。我已经成功地在 listFragment 中显示了这两个。然而,Artist Names 和 Title Tracks 都在不同的 ArrayLists 中,并且是单独检索的。因此,当我尝试对一个列表进行排序时,每件事都会搞砸。
获取标题的代码
public void findAllMusicFilesTitles() {
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String[] projection = { MediaStore.Audio.AudioColumns.DATA, MediaStore.Audio.AudioColumns.TITLE };
Cursor audioCursor = getActivity().getBaseContext().getContentResolver().query(uri, projection, null, null, null);
if (audioCursor != null) {
while (audioCursor.moveToNext()) {
songarray.add(audioCursor.getString(audioCursor.getColumnIndex(MediaStore.Audio.AudioColumns.TITLE)));
}
audioCursor.close();
}
}
检索艺术家姓名的代码
public void findAllMusicFilesArtists() {
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String[] projection = { MediaStore.Audio.AudioColumns.DATA, MediaStore.Audio.AudioColumns.ARTIST };
Cursor audioCursor = getActivity().getBaseContext().getContentResolver().query(uri, projection, null, null, null);
if (audioCursor != null) {
while (audioCursor.moveToNext()) {
artistarray.add(audioCursor.getString(audioCursor.getColumnIndex(MediaStore.Audio.AudioColumns.ARTIST)));
}
audioCursor.close();
}
}
我在其中进行排序的 ListFragment 的 onCreate() 方法
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
songarray = new ArrayList<String>();
artistarray = new ArrayList<String>();
findAllMusicFilesTitles();
findAllMusicFilesArtists();
Collections.sort(songarray, String.CASE_INSENSITIVE_ORDER);
playlistArrayAdapter adapter = new playlistArrayAdapter(getActivity().getBaseContext(), songarray, artistarray);
setListAdapter(adapter);
}
您能否提出解决此问题的方法。我有一个想法,用歌曲 URL 创建另一个 ArrayList,然后尝试找到解决方法,但这似乎也没有用。
谢谢
【问题讨论】:
-
你试过hashmap吗?
-
@JosefE。不,我没有。我是android开发的新手。不过我会调查的