@dikutenz

Как определить какой элемент списка привязан к конкретному холдеру?

У меня есть адаптер и холдер для списка. При нажатии на элемент списка, нужно чтобы открылся новый фрагмент с детальным отображением этого элемента. Как определить какой garment привязан к конкретному холдеру, чтобы отправить данные garment.getID для открытия нажатого компонента?

public class GarmentListAdapter extends RecyclerView.Adapter {
private List mGarments = new ArrayList<>();

@NonNull
@Override
public GarmentHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.list_item_garment, parent, false);
return new GarmentHolder(itemView);
}

@Override
public void onBindViewHolder(@NonNull GarmentHolder holder, int position) {
Garment currentGarment = mGarments.get(position);
holder.mTitleTextView.setText(currentGarment.getTitle());
DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy", Locale.getDefault());
String dateText = dateFormat.format(currentGarment.getDate());
holder.mDateTextView.setText(dateText);
}

@Override
public int getItemCount() {
if (mGarments != null)
return mGarments.size();
else return 0;
}

public void setGarments(List garments) {
mGarments = garments;
notifyDataSetChanged();
}

class GarmentHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private TextView mTitleTextView;
private TextView mDateTextView;

public GarmentHolder(@NonNull View itemView) {
super(itemView);
itemView.setOnClickListener(this);
mTitleTextView = (TextView) itemView.findViewById(R.id.title_text_view);
mDateTextView = (TextView) itemView.findViewById(R.id.date_text_view);
}

@Override
public void onClick(View v) {
replaceFragment(GarmentFragment.newInstance(garment.getId()));
}
}
  • Вопрос задан
  • 42 просмотра
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
В onBindViewHolder cохраняй в холдер элемент(или его позицию, но элемент удобнее).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@tiroman
Почему бы не сделать метод для холдера setClickListener и в адаптере в onBind его устанавливать, а там элемент доступен
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы