簡體   English   中英

在 getResources().getIdentifier() 中顯示相同的圖片

[英]Displaying same pictures in getResources().getIdentifier()

我目前正在開發一個音樂播放器應用程序,我的可繪制文件夾中有一些圖像想要按特定順序顯示它們。 我發現我必須使用getResources().getIdentifier()方法,但我的所有歌曲總是得到相同的圖片。 那么我該如何解決這個問題呢? 這是我的代碼:

@Override
public void onBindViewHolder( SingerListAdapter.SingerListViewHolder viewHolder, int i) {
    String drawableAddress = "R.drawable.gray_rectangle_"+i;
   viewHolder.singerName.setText(musicDataModel.get(i).getmAtrist());
   if(i != 47){
       int idResource = context.getResources().getIdentifier(drawableAddress,"drawable",context.getPackageName());
       viewHolder.singerMusicCover.setImageResource(idResource);
   }
   viewHolder.singerMusicCover.setImageResource(R.drawable.gray_rectangle_5);
}

注意我的musicDataModel變量包含所有歌曲及其信息並且可以正常工作。 而且同一張圖總是gray_rectangle_5

您必須從字符串drawableAddress刪除前綴R.drawable ,因此更改:

String drawableAddress = "R.drawable.gray_rectangle_"+i;

到:

String drawableAddress = "gray_rectangle_"+i;

if塊中,您可以在i != 47時正確設置圖像,但是當代碼退出if塊時,它將圖像設置為R.drawable.gray_rectangle_5 ,這就是您總是看到此圖像的原因。
也許您應該在if語句中添加一個else部分,假設這是您在i = 47時想要的圖像:

@Override
public void onBindViewHolder( SingerListAdapter.SingerListViewHolder viewHolder, int i) {
    String drawableAddress = "gray_rectangle_" + i;
    viewHolder.singerName.setText(musicDataModel.get(i).getmAtrist());
    if (i != 47) {
        int idResource = context.getResources().getIdentifier(drawableAddress,"drawable",context.getPackageName());
        viewHolder.singerMusicCover.setImageResource(idResource);
    } else {
        viewHolder.singerMusicCover.setImageResource(R.drawable.gray_rectangle_5);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM