此代码获取所有歌曲的专辑,但如果特定专辑中有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;
}
}
答案 0 :(得分:1)
您应该使用MediaStore.Audio。相册类,如下所示:
AllDirectories
您只需将MediaStore.Audio.Media替换为MediaStore.Audio.Albums,您的代码即可使用。
不要忘记接受它作为你的问题的答案,以获得更多的声誉。