# 🔄 Adapters — Adaptadores RecyclerView > **Pasta:** `app/src/main/java/com/example/medcuida/pro/ui/adapters/` Os Adapters fazem a ligação entre os **dados** (listas de objetos) e as **views** (itens visuais no RecyclerView). Cada adapter tem um `ViewHolder` interno que mapeia os elementos do layout XML. --- ## ConsultaAdapter.java (113 linhas) **Layout do item:** `item_consulta_medico.xml` ### Para que serve Mostra cada consulta na lista da agenda com: nome do paciente, data/hora, status e botões de ação. ### Interfaces (callbacks) ```java interface OnConsultaActionClickListener { void onAceitarClick(Consulta consulta); // Botão "Confirmar" void onEliminarClick(Consulta consulta); // Botão "Cancelar" } interface OnConsultaClickListener { void onConsultaClick(Consulta consulta); // Clique no item inteiro } ``` ### Lógica do `bind()` (Linhas 75–109) 1. **Nome do paciente** → mostra `pacienteNome` ou `"Desconhecido"` 2. **Data e hora** → combina `data` + `hora` (ex: `"22/04/2026 às 14:30"`) 3. **Status** → mostra o texto do status atual 4. **Botão Confirmar:** - Visível **apenas** se o status for `"Pendente"` - Chama `onAceitarClick()` ao clicar 5. **Botão Cancelar:** - **Sempre visível** - Chama `onEliminarClick()` ao clicar 6. **Clique no item** → chama `onConsultaClick()` --- ## MensagemAdapter.java (74 linhas) **Layout do item:** `item_mensagem.xml` ### Para que serve Mostra cada mensagem no chat. Distingue visualmente mensagens **enviadas** vs **recebidas**. ### Como funciona (Linhas 40–53) ```java if (mensagem.getSenderId().equals(currentUserId)) { // Mostrar layout de mensagem ENVIADA (direita) } else { // Mostrar layout de mensagem RECEBIDA (esquerda) } ``` - Cada item tem **dois layouts** (`layout_msg_enviada` e `layout_msg_recebida`) - Apenas um fica visível de cada vez, com base no `senderId` - O `currentUserId` é passado no construtor --- ## PacienteAdapter.java (75 linhas) **Layout do item:** `item_paciente.xml` ### Para que serve Mostra cada paciente numa lista simples com nome e email. ### Interface ```java interface OnPacienteClickListener { void onPacienteClick(Paciente paciente); } ``` ### Lógica do `bind()` (Linhas 63–72) 1. **Nome** → mostra `nome` ou `"Desconhecido"` 2. **Email** → mostra `email` ou `"N/A"` 3. **Clique no item** → chama `onPacienteClick()` --- ## Padrão Comum dos 3 Adapters Todos seguem a mesma estrutura: ``` 1. Extends RecyclerView.Adapter 2. Lista interna de dados 3. Método setXxx(List) para atualizar + notifyDataSetChanged() 4. onCreateViewHolder → infla o layout XML 5. onBindViewHolder → preenche os dados 6. getItemCount → retorna tamanho da lista 7. ViewHolder interno (static class) ```