因此,我正在爲音樂播放器製作示例播放列表,並且正在嘗試獲取藝術家姓名和曲目標題。我已經在listFragment中成功顯示了這兩個。然而,藝術家名稱和標題曲目都在不同的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);
}
你可以請建議解決這個問題。我有一個創建另一個ArrayList與歌曲URL的想法,然後試圖找到一個方法,但似乎也沒用。
謝謝
你試過了散列表嗎? –
@JosefE。不,我沒有。我是Android開發新手。不過,我會考慮這一點 –