0

此代碼獲取所有歌曲的專輯,但如果某個專輯中有5首歌曲,專輯名稱會同時出現5次。如何避免這種情況?Android音樂播放器:專輯名稱重複

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

您應該使用MediaStore.Audio。 相冊類,像這樣:

String[] proj={MediaStore.Audio.Albums._ID, MediaStore.Audio.Albums.ALBUM}; 
final Cursor c=getActivity().getContentResolver().query(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, proj, null, null, null); 

我們必須用MediaStore.Audio.Albums更換MediaStore.Audio.Media和你的代碼應該工作。

不要忘記接受它作爲您的問題的答案,以獲得更多的聲譽。

+1

這麼容易,但很難找到。有關參考請參閱[MediaStore.Audio.Albums](http://developer.android.com/reference/android/provider/MediaStore.Audio.Albums.html) –