我正在制作音乐应用程序,并且试图在存储中搜索歌曲,然后在版式上显示封面。
我已经可以显示歌曲名称和专辑了。
private void loadSongs() {
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
//String selection =
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
if (cursor != null) {
if (cursor.moveToFirst()) {
do {
String name = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));
String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
String url = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
Song newSong = new Song(name, artist, album, url);
songs.add(newSong);
displaySongs.add(name + "\n" + album + "\n" + artist + "\n" + url);
} while (cursor.moveToNext());
}
cursor.close();
}
}
public void showSongs() {
listView = (ListView) findViewById(R.id.ListView);
displaySongs = new ArrayList<>();
loadSongs();
adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1, displaySongs);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
}
});
}
答案 0 :(得分:2)
答案 1 :(得分:0)
是的,您必须获取图像位置的Uri或Url。
我建议您使用Glide将图像加载到ImageView中。
首先将Glide导入您的module:app
dependencies {
...
//Glide
implementation 'com.github.bumptech.glide:glide:4.9.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
}
要使用Glide:
Glide.with(context).load(url).into(imageView);