【发布时间】:2020-07-13 21:17:51
【问题描述】:
在我为此使用 ArrayList 之前,但由于重复的专辑问题(我在 API29 之前通过使用 DISTINCT 和 GROUP BY 语句解决了),不再允许在查询中使用。
我在我的 RecyclerViews 适配器中得到了这样的值:myArrayList.get(position).getAlbum();
但现在我使用的是 HashMap,我怎样才能通过从适配器获得的位置获取值?
在Hashmap中添加值的代码
HashMap<Integer, Album> albums = new HashMap<>();
String[] projection2 = { MediaStore.Audio.Media.ALBUM_ID,
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.IS_MUSIC};
String selection = MediaStore.Audio.Media.IS_MUSIC + "!=0";
String sort = MediaStore.Audio.Media.ALBUM + " COLLATE NOCASE ASC";
cursor = resolver.query(musicUri, projection2, selection, null, sort);
try {
if (cursor != null) {
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
int columnAlbumId = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID);
int columnAlbumName = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM);
String albumId = cursor.getString(columnAlbumId);
String albumName = cursor.getString(columnAlbumName);
if(albums.containsKey(albumId) == false){
Album album = new Album(albumId, albumName);
albums.put(albumId, album);
}
cursor.moveToNext();
}
}
}catch (Exception e){
Log.e(TAG, "Exception caught when creating ALBUM!", e);
throw new Exception();
}
【问题讨论】:
标签: java android android-recyclerview hashmap