如何在移动应用程序屏幕上显示数据?

时间:2019-07-16 08:01:26

标签: java android

我正在尝试为我的一个学校项目创建一个音乐应用。因此,它要求该应用程序能够读取手机的存储,然后显示它。

到目前为止,我已经能够通过使用MediaStore(底部的代码)读取歌曲及其数据的存储。从那里,我将所需的数据存储到Song类中,如下所示:

Song(String _songName, String _songArtist, String _songAlbum, String _songUri, String _coverArt). 

将数据存储到类中之后,然后将其存储到ArrayList中。

因此,我能够读取数据并存储。但是从那里,我不太确定如何从存储它的列表中显示它。

private void loadSongs() {
    Uri audioUri =  MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    Cursor audioCursor = getContentResolver().query(audioUri, null, null, null, null);
    if(audioCursor != null) {
        if(audioCursor.moveToFirst()) {
            do {
                String songName = audioCursor.getString(audioCursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
                String songArtist = audioCursor.getString(audioCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
                String songAlbum = audioCursor.getString(audioCursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));
                String songUri = audioCursor.getString(audioCursor.getColumnIndex(MediaStore.Audio.Media.DATA));

                Song newSong = new Song(songName, songArtist, songAlbum, songUri, null);

                loadedSong.add(newSong);

            } while(audioCursor.moveToNext());

        }
        audioCursor.close();
    }
}

private void loadPictures() {
    Uri imageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
    Cursor imageCursor = getContentResolver().query(imageUri, null, null, null, null);
    if(imageCursor != null) {
        if(imageCursor.moveToFirst()) {
            do {
                String pictureAlbum = imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.TITLE));
                String pictureUri = imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA));

                CoverArt newCoverArt = new CoverArt(pictureAlbum, pictureUri);

                loadedCoverArt.add(newCoverArt);

            } while(imageCursor.moveToNext());
        }
        imageCursor.close();
    }
}

private void arrangeCoverArt() {
    for(int audioStart = 0; audioStart < (loadedSong.size() - 1); audioStart++) {
        Song currentSong = loadedSong.get(audioStart);
        String audioUri = currentSong.getSongUri();
        String[] arrayAudioUri = audioUri.split("/");
        for(int coverStart = 0; coverStart < (loadedCoverArt.size() - 1); coverStart++) {
            CoverArt currentCover = loadedCoverArt.get(coverStart);
            String coverUri = currentCover.getCoverArtUri();
            String[] arrayCoverUri = coverUri.split("/");
            if(arrayAudioUri[(arrayAudioUri.length - 2)].equals(arrayCoverUri[(arrayCoverUri.length - 2)])) {
                currentSong.setCoverArt(currentCover.getCoverArtUri());
                displayedData.add(currentSong.getSongName() + "\n" + currentSong.getSongArtist() + "\n" + currentSong.getSongAlbum() + "\n" + currentSong.getCoverArt());
                break;
            }

        }

    }
}

我要如何显示歌曲:

enter image description here

1 个答案:

答案 0 :(得分:0)

有多种方法可以解决此问题,这实际上取决于您要解决的问题。例如,如果您希望将它们全部显示在一个位置,则可以使用ListView或一次只显示一种音乐(例如Spotify),则应考虑设计和实现一个独立视图,将这些变量用作参数并将其显示给用户。