falta so o chat
This commit is contained in:
102
docs/08_Adapters.md
Normal file
102
docs/08_Adapters.md
Normal 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 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<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)
|
||||
```
|
||||
Reference in New Issue
Block a user