Как показать imageViews в RecyclerView (Android) - PullRequest
0 голосов
/ 15 ноября 2018

Я создаю массив изображения: (logos.xml)

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

Затем в моем классе Function: у меня есть

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

public void getIcon() { return icon; }

Final, в FunctionAdapter я получаю Imageview

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

мой вопрос в onBindViewHolde (держатель @NonNull FunViewHolder, позиция int)

 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} ;

тогда, картинки будут меняться.

Ответы [ 3 ]

0 голосов
/ 15 ноября 2018

Используйте setImageDrawable () метод для загрузки локальных объектов рисования вместо использования setImageResource.

holder.itemImageView.setImageDrawable(context.getResources().getDrawable(icons[position]))
0 голосов
/ 15 ноября 2018
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;


        }
0 голосов
/ 15 ноября 2018

вы должны использовать String [] вместо String в конструкторе.

использовать

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

вместо

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