是否可以找到存储中的图像然后显示?

时间:2019-07-12 09:31:44

标签: java android

我正在制作音乐应用程序,并且试图在存储中搜索歌曲,然后在版式上显示封面。

我已经可以显示歌曲名称和专辑了。

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) {

        }
    });


}

2 个答案:

答案 0 :(得分:2)

是的,可以。您基本上需要从URI中获取图像并将其设置为ImageView。我可能会建议您使用GlidePicasso之类的图像加载库来减少样板代码,而不必担心缓存和填充内容。

答案 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);
相关问题