gpt4 book ai didi

java - 在 getResources().getIdentifier() 中显示相同的图片

转载 作者:行者123 更新时间:2023-11-29 22:51:52 25 4
gpt4 key购买 nike

我目前正在开发一个音乐播放器应用程序,我的可绘制文件夹中有一些图像需要按特定顺序显示。我发现我必须使用 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 block 中,您在 i != 47 时正确设置了图像,但是当代码退出 if block 时,它设置了图片到 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);
}
}

关于java - 在 getResources().getIdentifier() 中显示相同的图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57810366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com