2.7 KiB
2.7 KiB
🔄 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 75–109)
- Nome do paciente → mostra
pacienteNomeou"Desconhecido" - Data e hora → combina
data+hora(ex:"22/04/2026 às 14:30") - Status → mostra o texto do status atual
- Botão Confirmar:
- Visível apenas se o status for
"Pendente" - Chama
onAceitarClick()ao clicar
- Visível apenas se o status for
- Botão Cancelar:
- Sempre visível
- Chama
onEliminarClick()ao clicar
- 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)
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_enviadaelayout_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 63–72)
- Nome → mostra
nomeou"Desconhecido" - Email → mostra
emailou"N/A" - 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)