Я попробовал это, но единственное, что отсортировано, это названия альбомов, я уже использую компаратор внутри моего getAlbum (); поэтому имена уже отсортированы, но обложка альбома не соответствует названию альбома.
му моя проблема в том, что когда я пытаюсь отсортировать альбомы, название альбома и обложка альбома неверны.
Я попытался отсортировать идентификаторы альбомов, но это не исправило это, потому что идентификаторы альбомов никак не связаны с сортировкой обложек.
Когда я пропускаю сортировку, все правильно, но когда я пытаюсь отсортировать их, названия альбомов не соответствуют обложке альбома.
Как я могу отсортировать мои альбомы во фрагменте?
Ниже вы можете найти мой код.
Заранее спасибо,
Винс
ПЕСНЯ МОДЕЛЬ
// Columns I'll retrieve from the song table
String[] columns = {
SONG_ID,
SONG_TITLE,
SONG_ARTIST,
SONG_ALBUM,
SONG_ALBUMID,
SONG_FILEPATH,
};
// Limits results to only show music files.
//
// It's a SQL "WHERE" clause - it becomes `WHERE IS_MUSIC=1`.
//
final String musicsOnly = MediaStore.Audio.Media.IS_MUSIC + "=1";
// Querying the system
cursor = resolver.query(musicUri, columns, musicsOnly, null, null);
if (cursor != null && cursor.moveToFirst())
{
do {
// Creating a song from the values on the row
Song song = new Song(cursor.getInt(cursor.getColumnIndex(SONG_ID)),
cursor.getString(cursor.getColumnIndex(SONG_FILEPATH)));
song.setTitle (cursor.getString(cursor.getColumnIndex(SONG_TITLE)));
song.setArtist (cursor.getString(cursor.getColumnIndex(SONG_ARTIST)));
song.setAlbumID (cursor.getInt(cursor.getColumnIndexOrThrow(SONG_ALBUMID)));
song.setAlbum (cursor.getString(cursor.getColumnIndexOrThrow(SONG_ALBUM)));
// Using the previously created genre and album maps
// to fill the current song genre.
String currentGenreID = songIdToGenreIdMap.get(Long.toString(song.getId()));
String currentGenreName = genreIdToGenreNameMap.get(currentGenreID);
song.setGenre(currentGenreName);
// Adding the song to the global list
songs.add(song);
}
while (cursor.moveToNext());
}
else
{
// What do I do if I can't find any songs?
}
cursor.close();
public ArrayList<String> getArtists() {
ArrayList<String> artists = new ArrayList<String>();
for (Song song : songs) {
String artist = song.getArtist();
if ((artist != null) && (! artists.contains(artist)))
artists.add(artist);
}
// Making them alphabetically sorted
Collections.sort(artists, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
return artists;
}
/**
* Returns an alphabetically sorted list with all the
* albums of the scanned songs.
*
* @note This method might take a while depending on how
* many songs you have.
*/
public ArrayList<String> getAlbums() {
ArrayList<String> albums = new ArrayList<String>();
for (Song song : songs) {
String album = song.getAlbum();
if ((album != null) && (! albums.contains(album)))
albums.add(album);
}
ПЕСНИ КЛАСС
public class Song implements Serializable {
private long id;
private String data;
private String title = "";
private String artist = "";
private int albumid = -1;
private String album = "";
private String genre = "";
public Song(long songId, String songData){
this.id = songId;
this.data = songData;
}
public long getId(){
return id;
}
public String getData(){return data;}
//Optional meta data
public void setTitle(String title){
this.title = title;
}
public String getTitle() {
return title;
}
public void setArtist(String artist){
this.artist = artist;
}
public String getArtist() {
return artist;
}
public int getAlbumID() {
return albumid;
}
public void setAlbumID(int albumid) { this.albumid = albumid; }
public void setAlbum(String album){
this.album = album;
}
public String getAlbum() { return album; }
public void setGenre(String genre) {
this.genre = genre;
}
public String getGenre() {
return genre;
}
}