在getResources()。getIdentifier()中显示相同的图片

时间:2019-09-05 17:24:24

标签: java android

我目前正在使用音乐播放器应用程序,并且在可绘制文件夹中有一些图像,它们想要按特定顺序显示。我发现我必须使用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

1 个答案:

答案 0 :(得分:1)

您必须从字符串R.drawable中删除前缀drawableAddress,所以请更改:

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

收件人:

String drawableAddress = "gray_rectangle_"+i;

if内,您i != 47正确设置了图像,但是当代码退出if块时,它将图像设置为R.drawable.gray_rectangle_5,这就是为什么您总是看到这张图片。
也许您应该在else语句中添加if部分,假设这是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);
    }
}