-1
@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.display_songs); 

    recyclerView = findViewById(R.id.recyclerView); 
    if (recyclerView != null) { 
     recyclerView.setHasFixedSize(true); 
    } 
    songAdapter = new SongAdapter(this, songList); 
    recyclerView.setAdapter(songAdapter); 
    songAdapter.notifyDataSetChanged(); 
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); 
    DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(), linearLayoutManager.getOrientation()); 
    recyclerView.setLayoutManager(linearLayoutManager); 
    recyclerView.addItemDecoration(dividerItemDecoration); 

    mainLayout = findViewById(R.id.mainLayout); 
    mToolbar = findViewById(R.id.mToolbar); 
    setSupportActionBar(mToolbar); 

    if (getSupportActionBar() != null) { 
     getSupportActionBar().setTitle(R.string.library); 
    } 

    currSongLayout = findViewById(R.id.currSongLayout); 
    currSongTitle = findViewById(R.id.currSongTitle); 
    currSongArtist = findViewById(R.id.currSongArtist); 
    albumArt = findViewById(R.id.albumIv); 


    recyclerView.addOnItemTouchListener(new OnItemClickListeners(this, new OnItemClickListeners.OnItemClickListener() { 
     @TargetApi(Build.VERSION_CODES.O) 
     @Override 
     public void onItemClick(View view, int position) { 
      songIndex = position; 
      Toast.makeText(getApplicationContext(), "You Clicked position: " + songIndex + " " + songList.get(songIndex).getData(), Toast.LENGTH_SHORT).show(); 
      try { 
       mediaPlayer.reset(); 
       mediaPlayer.setDataSource(songList.get(songIndex).getData()); 
       mediaPlayer.prepareAsync(); 
       mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
        @Override 
        public void onPrepared(MediaPlayer mp) { 
         mp.start(); 
        } 
       }); 

       currSongTitle.setText(songList.get(position).getTitle()); 
       currSongArtist.setText(songList.get(position).getArtist()); 
      }catch (Exception e){ 

       e.printStackTrace(); 

      } 
      currSongLayout.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Intent currSong = new Intent(DisplaySongsActivity.this, SongActivity.class); 
        currSong.putExtra("songIndex", songIndex); 
        startActivity(currSong); 
       } 
      }); 

      String path = songList.get(position).getAlbum(); 
      if (path.equals("null")){ 
       albumArt.setImageResource(R.drawable.no_album); 
      }else{ 
       Drawable image = Drawable.createFromPath(path); 
       albumArt.setImageDrawable(image); 
      } 


     } 
    })); 


    //Methode call controle voor toestemming lezen Storage 
    checkUserPermission(); 

    //Methode call songs inlezen 
    getSongs(); 

    //Sort songs 
    Collections.sort(songList, new Comparator<QuerySongs>() { 
     public int compare(QuerySongs a, QuerySongs b) { 
      return a.getTitle().compareTo(b.getTitle()); 
     } 
    }); 

} 
//Songs inlezen 
@TargetApi(Build.VERSION_CODES.O) 
public void getSongs() { 

    Uri songUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 

    String selection = MediaStore.Audio.Media.IS_MUSIC + "!=0"; 
    Cursor myCursor = getContentResolver().query(songUri, null, selection, null, null); 


    if (myCursor != null && myCursor.moveToFirst()) { 
     int id_Column = myCursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID); 
     int data_Column = myCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA); 
     int title_Column = myCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE); 
     int artist_Column = myCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST); 
     int album_Column = myCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM); 
     long albumId = myCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID); 

     do { 

      Long songId = myCursor.getLong(id_Column); 

      String songData = myCursor.getString(data_Column); 
      String songName = myCursor.getString(title_Column); 
      String songArtist = myCursor.getString(artist_Column); 
      String songAlbum = myCursor.getString(album_Column); 

      QuerySongs querySongs = new QuerySongs(songId, songData, songName, songArtist, songAlbum); 
      songList.add(querySongs); 

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

} 

ソングコンストラクタクラス。すべての曲からアルバムアートを取り出して、それをimageViewに追加するにはどうすればよいですか?

public QuerySongs(Long songId, String songData, String songName, String songArtist, String songAlbum){ 
    this.id = songId; 
    this.albumId = albumId; 
    this.data = songData; 
    this.title = songName; 
    this.artist = songArtist; 
    this.album = songAlbum; 

} 

public Long getId(){ 
    return id; 
} 

public Long getAlbumId(){ 
    return albumId; 
} 

public String getData(){ 
    return data; 
} 


public String getTitle() { 
    return title; 
} 


public String getArtist() { 
    return artist; 
} 

public String getAlbum(){ 
    return album; 
} 

これは私の2つのクラスで、すべての曲のアルバムアートをimageViewに表示します。 ピカソでイメージビーに読み込もうとしていますが、うまくいきません。私は思った通りのやり方で、アルバムのパスを取得する方法がわかりません。 どうすればこの問題を解決できますか? ありがとう、

答えて

0

コードの問題はあなたのパスにあります。 パス=を番号の位置にインスタンス化しました。 パスを取得するにはそれがなければなりません:

String path = songsList.get(position).get(MediaStore.Audio.Albums.ALBUM_ART); 

あなたはあなたのイメージを表示するためにグライドやピカソを使用することができます。

https://github.com/codepath/android_guides/wiki/Displaying-Images-with-the-Glide-Library

https://github.com/square/picasso

+0

私はそれを試してみましたが、それは'トンの仕事をdidnの。見て編集 – Vince

+0

私はちょうどalbumartのパスを取得する方法がわからない。 – Vince

+0

私の回答を更新しました。あなたのパスは正しいパスではない番号です。 –

関連する問題