@plvskiy

Как сделать onClick в RecyclerView?

Я загружаю данные из Firebase Firestore и вывожу в RecyclerView. Как сделать onClick для каждого элемента RecyclerView?
Вот мой код:
public class NoteAdapter extends FirestoreRecyclerAdapter<Note, NoteAdapter.NoteHolder> {

    public NoteAdapter(@NonNull FirestoreRecyclerOptions<Note> options) {
        super(options);
    }

    @Override
    protected void onBindViewHolder(@NonNull NoteHolder holder, int position, @NonNull Note model) {
        holder.textViewAmount.setText("");
        holder.textViewCoast.setText("");
        holder.textViewDate.setText(String.valueOf("");
        holder.textViewAmount.setTextColor("");

        Glide.with(holder.icon_opt.getContext())
                .load(model.getPhoto())
                .into(holder.icon_opt);
    }

    @NonNull
    @Override
    public NoteHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.note_item,
                parent, false);

        return new NoteHolder(v);
    }

    class NoteHolder extends RecyclerView.ViewHolder{

        TextView textViewAmount, textViewCoast, textViewDate;
        ImageView icon_opt;
        CardView Cardview;

        public NoteHolder(View itemView) {
            super(itemView);

            textViewAmount = itemView.findViewById(textAmount);
            textViewCoast =  itemView.findViewById(textCoast);
            icon_opt = itemView.findViewById(R.id.icon_tr);
            textViewDate = itemView.findViewById(textDate);
            Cardview = itemView.findViewById(cardview);
        }
    }

}
  • Вопрос задан
  • 1647 просмотров
Пригласить эксперта
Ответы на вопрос 2
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Делаешь свой интерфейс с методом onClick, прокидываешь его в адаптер, на вьюху ставишь обычный кликлистенер, в нём дергаешь свой.
Ответ написан
Комментировать
@crystaldxpe
В onBindViewHolder(...) пишешь holder.itemView.setOnclickListener(...) и назначаешь listener каждому ViewHolder'у. На Джаве, если нужно выполнить код извне, можно объявить callback интерфейс и реализовать его во врагменте или активити, на которых находится список, или же писать на Котлине, где можно просто передать лямбду в качестве параметра конструктора.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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