Files
cuidamais_med/docs/08_Adapters.md
2026-04-22 12:41:12 +01:00

2.7 KiB
Raw Blame History

🔄 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)

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 75109)

  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 4053)

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

interface OnPacienteClickListener {
    void onPacienteClick(Paciente paciente);
}

Lógica do bind() (Linhas 6372)

  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<ViewHolder>
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)