Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中循环URI列表的最佳方式是什么?_Java_Android_Android Studio - Fatal编程技术网

Java 在Android中循环URI列表的最佳方式是什么?

Java 在Android中循环URI列表的最佳方式是什么?,java,android,android-studio,Java,Android,Android Studio,我正在用Android创建一个音乐播放器。要创建一个Song对象,我必须使用ContentResolver中的不同URI重复查询各种数据。下面是一个例子: //get columns int titleColumn = musicCursor.getColumnIndex (android.provider.MediaStore.Audio.Media.TITLE); int idColumn = musicCursor.getColumnIndex (android

我正在用Android创建一个音乐播放器。要创建一个Song对象,我必须使用ContentResolver中的不同URI重复查询各种数据。下面是一个例子:

  //get columns
  int titleColumn = musicCursor.getColumnIndex
    (android.provider.MediaStore.Audio.Media.TITLE);
  int idColumn = musicCursor.getColumnIndex
    (android.provider.MediaStore.Audio.Media._ID);
  int artistColumn = musicCursor.getColumnIndex
    (android.provider.MediaStore.Audio.Media.ARTIST);
  //add songs to list
  do {
    long thisId = musicCursor.getLong(idColumn);
    String thisTitle = musicCursor.getString(titleColumn);
    String thisArtist = musicCursor.getString(artistColumn);
    songList.add(new Song(thisId, thisTitle, thisArtist));
  }
现在,如果我将专辑、流派和其他信息也添加到Song对象中,您可以想象这看起来并不漂亮。我正在考虑一个选项,但我想知道是否有更好的方法:

使用Uri.parse(..)在数组中保留所有属性的字符串表示形式后,将字符串转换为Uri,如[Title、Artist、Album,…]。问题:并非所有数据类型都是字符串,因此将返回的值放在一个集合中很麻烦。此外,当将其传递给Song构造函数时,我可能必须按索引传递每个元素(从而使我的代码依赖于字符串数组的索引)


我知道我可能想得太多了,但我想知道是否有更好的方法

所以您正在使用内容提供商。。。然后,如果你想在ListView中显示游标,就不要使用歌曲模型,而是使用LoadersAPI+CursorAdapter…我不一定要在ListView中显示所有列,但我会看看你说了什么。这是我第一个认真的Android项目,所以我对框架的工作原理还是有点生疏。