首页 > 解决方案 > 如何在 RecyclerView (Android) 中显示 imageViews

问题描述

我创建了一个图像的数组:(logos.xml)

<integer-array name="icons"><Item>@drawable/pic_01 to @drawable/pic_04<item>

然后,在我的课堂功能:我有

public Function(String name , int icon) { this.icon = icon }

public void getIcon() { return icon; }

最后,在 FunctionAdapter 中,我得到 Imageview

punlic FunctionAdapter(Context context) { icons = context.getResources().getIntArray(R.array.icons);

我的问题是 onBindViewHolde(@NonNull FunViewHolder holder, int position)

 holder.itemImageView.setImageResource(icons[position])

不工作,我想知道我想念什么?谢谢帮助。

我想改变我的 ImageView(pic1 到 pic4)

我的适配器:

public class FunctionAdapter extends RecyclerView.Adapter<FunctionAdapter.FunViewHolder>
{
   private final String[] functions;
   private final int[] icons;
   Context context;

   public FunctionAdapter(Context context){
       this.context = context;
       functions  = context.getResources().getStringArray(R.array.functions);
       icons = context.getResources().getIntArray(R.array.icons);
   }

  public FunViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {

  View view = LayoutInflater.from(context).inflate(R.layout.group_layout, parent,false);
   return new FunViewHolder(view);
  }

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

         holder.nameText.setText(functions[position]);
         holder.itemImageView.setImageResource(icons[position]);
   }

  public int getItemCount() { return functions.length; }

  public class FunViewHolder extends RecyclerView.ViewHolder{

   TextView nameText;
   ImageView itemImageView;
   public FunViewHolder(@NonNull View itemView) {
     super(itemView);
      nameText = itemView.findViewById(R.id.group_title);
      itemImageView = itemView.findViewById(R.id.group_logo);
    }
}

更新 :

我的错误,logos.xml 可能是问题,但我不知道为什么?

我决定编辑我的图标:

private final int[] icons = new int[]{R.drawable.pic_01, R.drawable.pic_02, R.drawable.pic_03, R.drawable.pic_04} ;

然后,图片会改变。

标签: androidandroid-recyclerviewimageviewadapter

解决方案


您必须在构造函数上使用 String[] 而不是 String 。

利用

public Function(String[] name , int icon) { this.icon = icon }

代替

public Function(String name , int icon) { this.icon = icon }

推荐阅读