java - 如何用另一个数组列表中歌曲的艺术家姓名填充数组列表

标签 java android arraylist

所以我正在为一个音乐播放器制作一个示例播放列表,我正在尝试获取艺术家姓名和轨道标题。我已经在 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);

    }

能否请您提出解决此问题的方法。我想创建另一个带有歌曲 URL 的 ArrayList,然后尝试找到解决方法,但这似乎也没有用。

谢谢

最佳答案

您可以使用游标根据您排序的值列表重新检索数据库中的信息。

或者您可以在彼此之间维护一个值的 Hashmap 以供快速引用,这样当您需要另一个值时,它们的顺序无关紧要。排序后,根据您的排序从数据库中重新检索数据可能是明智的。

关于java - 如何用另一个数组列表中歌曲的艺术家姓名填充数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24790406/

相关文章:

java - 在 spring jdbctemplate 中传递不带单引号的字符串

java - 字符串[]到对象[] Java

Android 在 cordova 中打开带有 html 内容的电子邮件客户端

Android - 为什么 IMarketBillingService 文件是 iadl 文件而不是 .java

java - 通过来自外部文件java的二维数组操作字符串和整数

android - 如何检查用户是否真正启动了 android 应用程序,而不仅仅是返回到 Activity ?

java - 列表的每个元素在函数之外都有相同的元素。

Javascript:循环数组中的项目

java - <? extends A> 不会接受 A 的子类

java - 验证 Java 中装饰器模式的实现