如何在RecyclerView(Android)中显示imageViews

时间:2018-11-15 06:57:16

标签: android android-recyclerview imageview adapter

我创建图像的数组:(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持有人,int位置)

 holder.itemImageView.setImageResource(icons[position])

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

I want to change my ImageView (pic1 to 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} ;

然后,图片将更改。

3 个答案:

答案 0 :(得分:0)

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

使用

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

代替

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

答案 1 :(得分:0)

使用 setImageDrawable()方法加载本地可绘制对象,而不是使用setImageResource。

holder.itemImageView.setImageDrawable(context.getResources().getDrawable(icons[position]))

答案 2 :(得分:0)

try this code 

 private int[] confirmIcon = {R.drawable.ic_action_green, 
                              R.drawable.ic_action_yellow, 
                              R.drawable.ic_action_red};



 switch ("your condition") {
            case 0:
                holder.ivConfirm.setImageResource(confirmIcon[0]);
                break;
            case 1:
                holder.ivConfirm.setImageResource(confirmIcon[1]);
                break;
            case 2:
                holder.ivConfirm.setImageResource(confirmIcon[2]);
                break;


        }