我目前正在使用音乐播放器应用程序,可绘制文件夹中有一些图像,这些图像要按特定顺序显示。我发现必须使用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
最佳答案
您必须从字符串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);
}
}