Как добавить несколько ImageView в onBindViewHolder в Android?
Всем привет. Тяжело даётся изучение разработки под Андроид и Java после Unity и C#, поэтому возникает полно разных вопросов.
У меня создан RecyclerView и Adapter, куда я добавляю данные из MainActivity.java:
data = new ArrayList<>();
data.add(new ProjectItem("Name", "04 May","@tester",
R.drawable.ava, R.drawable.logo_black,
new int[]{R.drawable.logo_white, R.drawable.logo_blue}));
projectAdapter = new ProjectAdapter(this, data);
projectRecyclerView.setAdapter(projectAdapter);
projectRecyclerView.setLayoutManager(new LinearLayoutManager(this));
Всё работает корректно, но в последнем параметре мне нужно передать массив из картинок (new int[]{R.drawable.logo_white, R.drawable.logo_blue}) и затем добавить его к каждому холдеру и в instrumentsLayout в Adapter.java:
public class ProjectsViewHolder extends RecyclerView.ViewHolder
{
TextView title, date, username;
ImageView avatar, instrument;
LinearLayout instrumentsLayout;
public ProjectsViewHolder(@NonNull View itemView)
{
super(itemView);
title = itemView.findViewById(R.id.projectTitle);
date = itemView.findViewById(R.id.projectDate);
username = itemView.findViewById(R.id.username);
avatar = itemView.findViewById(R.id.avatar);
instrument = itemView.findViewById(R.id.instrument);
instrumentsLayout = itemView.findViewById(R.id.projectInstruments);
}
}
@Override
public void onBindViewHolder(@NonNull ProjectsViewHolder holder, int position)
{
holder.title.setText(data.get(position).getTitle());
holder.date.setText(data.get(position).getDate());
holder.username.setText(data.get(position).getUsername());
holder.avatar.setImageResource(data.get(position).getAvatar());
holder.instrument.setImageResource(data.get(position).getInstrument());
int[] projectInstrumentsList = data.get(position).getProjectInstrumentsList();
for(int i = 0; i < projectInstrumentsList.length; i++)
{
if (projectInstrumentsList[i] == R.drawable.logo_white)
{
//Тут нужно добавлять View в Layout
}
}
}
У меня получается добавить например одну картинку:
holder.avatar.setImageResource(data.get(position).getAvatar());
В каждый холдер приходит int массив projectInstrumentsList, который я передаю из MainActivity. Не могу понять как перебирая массив добавить все картинки по ключу.
В гугле советуют такой подход:
ImageView imageView = new ImageView(holder.instrumentsLayout.getContext());
holder.instrumentsLayout.addView(imageView);
Но здесь мне непонятно как получить картинки из holder.instrumentsLayout.getContext().
Подскажите, как наиболее безболезненно это можно реализовать?
Ответы (1 шт):
ImageView imageView = new ImageView(holder.instrumentsLayout.getContext());
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
imageView.setLayoutParams(lp);
imageView.setImageResource(projectInstrumentsList[i]);
holder.instrumentsLayout.addView(imageView);