我对 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 中,并且当单击图像时,其余信息存储在单独的 Activity 中。
当图像存储在本地可绘制文件夹中时,如何将图像放入 RecyclerView 中?
任何帮助将不胜感激!谢谢!!!
编辑:
将每个图像文件的名称存储在数组中后,即:“duroc_list”
ArrayList<String> list_image = new ArrayList<>();
ArrayList<String> name = new ArrayList<>();
ArrayList<String> desc_image = new ArrayList<>();
ArrayList<String> description = new ArrayList<>();
try {
JSONObject obj = new JSONObject(loadJSONFromAsset());
JSONArray pigArray = obj.getJSONArray("pigs");
for (int i = 0; i < pigArray.length(); i++) {
JSONObject pigDetail = pigArray.getJSONObject(i);
name.add(pigDetail.getString("name"));
list_image.add(pigDetail.getString("list_image"));
desc_image.add(pigDetail.getString("desc_image"));
description.add(pigDetail.getString("description"));
}
} catch (JSONException e) {
e.printStackTrace();
}
如何在适配器中选择和使用数组中的每个项目以在 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);
}
}
最佳答案
您可以通过保存的名称从您的drawable res文件夹中获取drawable。例如,如果您的 res/drawable
文件夹中有 ic_home.png
,您可以通过传递 "ic_home"
作为此方法的第一个参数.
public static Drawable getDrawable(String name, Context context) {
int resourceId = context.getResources().getIdentifier(name, "drawable", context.getPackageName());
return context.getResources().getDrawable(resourceId);
}
关于java - 从android中的String Arraylist访问drawable文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61092479/