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