Java 在android中从字符串Arraylist访问可绘制文件

Java 在android中从字符串Arraylist访问可绘制文件,java,android,json,android-studio,android-recyclerview,Java,Android,Json,Android Studio,Android Recyclerview,我对Android开发非常陌生,但我正在尝试用JSON对象解析本地JSON文件,如下所示: "pigs": [ { "name": "Duroc", "list_image": "duroc_list", "desc_image": "duroc_desc", "description": "The Duroc pig is an older breed of domestic pig. The breed was developed in the United Sta

我对Android开发非常陌生,但我正在尝试用JSON对象解析本地JSON文件,如下所示:

     "pigs": [
{
  "name": "Duroc",
  "list_image": "duroc_list",
  "desc_image": "duroc_desc",
  "description": "The Duroc pig is an older breed of domestic pig. The breed was developed in the United States and formed the basis for many mixed-breed commercial hogs. Duroc pigs are reddish-brown, large-framed, medium length, and muscular, with partially-drooping ears. They tend to be one of the least aggressive of all swine breeds raised for meat."
},
我需要将图像存储到专门来自“list_image”的RecyclerView中,其余信息在单击图像时存储在单独的活动中

当图像存储在本地可绘制文件夹中时,我将如何让图像进入RecyclerView

任何帮助都将不胜感激!谢谢

编辑:

将每个图像文件的名称存储在数组中后,即:“duroc_列表”

ArrayList list_image=new ArrayList();
ArrayList name=新的ArrayList();
ArrayList desc_image=新的ArrayList();
ArrayList description=新建ArrayList();
试一试{
JSONObject obj=新的JSONObject(loadJSONFromAsset());
JSONArray pigArray=obj.getJSONArray(“pigs”);
对于(int i=0;i
如何在要在RecyclerView中查看的适配器中选择和使用阵列中的每个项目

适配器:

   List<Integer> images;
LayoutInflater inflater;

public Adapter(Context context, List<Integer> images) {

    this.images = images;
    this.inflater = LayoutInflater.from(context);
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = inflater.inflate(R.layout.grid_layout, parent, false);
    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {

    holder.listPigs.setImageResource(images.get(position));
}

@Override
public int getItemCount() {
    return images.size();
}

public class ViewHolder extends RecyclerView.ViewHolder {

    ImageView listPigs;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        listPigs = itemView.findViewById(R.id.image_list);
    }
}
列出图像;
充气机;
公共适配器(上下文、列表图像){
这个。图像=图像;
this.inflater=layoutiner.from(上下文);
}
@非空
@凌驾
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType){
视图=充气机。充气(R.layout.grid\u布局,父级,false);
返回新的ViewHolder(视图);
}
@凌驾
public void onBindViewHolder(@NonNull ViewHolder,int位置){
holder.listPigs.setImageResource(images.get(position));
}
@凌驾
public int getItemCount(){
返回图像。size();
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
图像视图列表;
公共视图持有者(@NonNull View itemView){
超级(项目视图);
listPigs=itemView.findViewById(R.id.image\u列表);
}
}

您可以通过保存的名称从drawable res文件夹中获取drawable。例如,如果在
res/drawable
文件夹中有
ic\u home.png
,则可以将传递的
“ic\u home”
作为此方法的第一个参数

public static Drawable getDrawable(String name, Context context) {
    int resourceId = context.getResources().getIdentifier(name, "drawable", context.getPackageName());
    return context.getResources().getDrawable(resourceId);
}

那么字符串“name”将是图像文件的名称?@Jordan是的,就是这样。调用这个方法怎么样?是否必须在适配器中完成?要调用此方法,需要上下文。它可以是应用程序或活动上下文。您可以通过调用View.getContext()将其传递给适配器,甚至可以从ViewHolder的任何视图访问上下文。非常感谢,我会尝试一下!
public static Drawable getDrawable(String name, Context context) {
    int resourceId = context.getResources().getIdentifier(name, "drawable", context.getPackageName());
    return context.getResources().getDrawable(resourceId);
}