falta so o chat

This commit is contained in:
2026-04-22 12:41:12 +01:00
parent 96d1985998
commit 2f3b03fe05
444 changed files with 22203 additions and 20079 deletions

102
docs/08_Adapters.md Normal file
View File

@@ -0,0 +1,102 @@
# 🔄 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 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)
```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 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)
```