Android 如何在使用';setImageResource';在安卓工作室?

Android 如何在使用';setImageResource';在安卓工作室?,android,android-recyclerview,Android,Android Recyclerview,我试图根据可绘制资源文件中的图像名称和数据库中相应的“图像编号”(在数据库中分配的编号对应于应使用的可绘制资源文件中的图像),动态地在recyclerView中设置图像 我已经走了这么远,但我一直坚持使用“setImageResource(x)”,其中x是图像编号 下面的代码不起作用,但它说明了我正在尝试做什么 @Override public void onBindViewHolder(@NonNull ItemHolder holder, int position) {

我试图根据可绘制资源文件中的图像名称和数据库中相应的“图像编号”(在数据库中分配的编号对应于应使用的可绘制资源文件中的图像),动态地在recyclerView中设置图像

我已经走了这么远,但我一直坚持使用“setImageResource(x)”,其中x是图像编号

下面的代码不起作用,但它说明了我正在尝试做什么

    @Override
    public void onBindViewHolder(@NonNull ItemHolder holder, int position) {
        Item currentItem = items.get(position);
        String imgNo = "R.drawable." + String.valueOf(currentItem.getPicturenumber());
        holder.textViewTitle.setText(currentItem.getTitle());
        holder.textViewText.setText(currentItem.getText());
        holder.imageViewImage.setImageResource(imgNo);
    }
在下图中,您可以看到我有三个文件,分别名为1、2和3。此编号对应于他们在数据库中分配的图像编号。我实际上是想根据currentItem的PictureEnumber来更改突出显示的行


您可以尝试此操作,但我建议您将
资源id
(R.drawable.1)存储在
项中,而不是
int

Resources resources = itemView.getContext().getResources();
final int resourceId = resources.getIdentifier(String.valueOf(currentItem.getPicturenumber()), "drawable", 
   itemView.getContext().getPackageName());
holder.imageViewImage.setImageResource(resourceId);

您可以尝试此操作,但我建议您将
资源id
(R.drawable.1)存储在
项中,而不是
int

Resources resources = itemView.getContext().getResources();
final int resourceId = resources.getIdentifier(String.valueOf(currentItem.getPicturenumber()), "drawable", 
   itemView.getContext().getPackageName());
holder.imageViewImage.setImageResource(resourceId);
由于要在数据库中保存“可绘制名称”,因此应尝试以下操作:

private Context context;
或者你可以这样做来获取上下文

private Context context;

@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
    super.onAttachedToRecyclerView(recyclerView);
    context = recyclerView.getContext();
}
但是,如果保存resourceId,即R.drawable.your_drawable,则可以直接使用

holder.imageViewImage.setImageResource(resourceId);
您可以查看以获得更多详细信息和理解。

由于您正在数据库中保存“可绘制名称”,您应该尝试以下操作:

private Context context;
或者你可以这样做来获取上下文

private Context context;

@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
    super.onAttachedToRecyclerView(recyclerView);
    context = recyclerView.getContext();
}
但是,如果保存resourceId,即R.drawable.your_drawable,则可以直接使用

holder.imageViewImage.setImageResource(resourceId);

您可以查看以了解更多详细信息。

保存图像id(R.drawable.image)而不是将图像名称保存在数据库中。然后只需从项目持有者处获取id并将其设置为ImageView,而不是将图像名称保存在db中,而是保存图像id(R.drawable.image)。然后,只需从物品持有者处获取id并将其设置为ImageView谢谢您的回复。我将我的项目更改为具有Picturename而不是Picturenumber。我收到一个“无法解析符号项视图”错误。这与我的onCreateViewHolder方法有关吗?是的,您可以是onCreateViewHolder()中的上下文。我已经更新了答案,请看一下。谢谢你的回复。我将我的项目更改为具有Picturename而不是Picturenumber。我收到一个“无法解析符号项视图”错误。这与我的onCreateViewHolder方法有关吗?是的,您可以是onCreateViewHolder()中的上下文。我已经更新了答案,请看一下。