Android音乐播放器:专辑名称正在重复播放

时间:2015-11-19 17:20:26

标签: android android-fragments android-intent android-mediaplayer

此代码获取所有歌曲的专辑,但如果特定专辑中有5首歌曲,则专辑名称同时出现5次。怎么避免这个?

public class AlbumListFragment extends Fragment {

private ListView lv;

public AlbumListFragment() {}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v=inflater.inflate(R.layout.list_view_album, container, false);
    final ArrayList<String> arr=new ArrayList<>();
    lv=(ListView)v.findViewById(R.id.lvalbum);
    String[] proj={MediaStore.Audio.Media._ID, MediaStore.Audio.Media.ALBUM};
    final Cursor c=getActivity().getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, proj, null, null, null);
    if(c!=null) {
        if(c.moveToFirst()) {
            do{
                int index=c.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM);
                arr.add(c.getString(index));
            }while(c.moveToNext());
        }
    } c.close();

    ArrayAdapter<String> adapter=new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, android.R.id.text1, arr);
    lv.setAdapter(adapter);
    return v;
}
}

1 个答案:

答案 0 :(得分:1)

您应该使用MediaStore.Audio。相册类,如下所示:

AllDirectories

您只需将MediaStore.Audio.Media替换为MediaStore.Audio.Albums,您的代码即可使用。

不要忘记接受它作为你的问题的答案,以获得更多的声誉。