我创建图像的数组:(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} ;
然后,图片将更改。
答案 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;
}