Aplicação móvel para gestão de atividades dos idosos-parte 3

 No último post, falei-vos da arquitetura técnica que pode vir a ser desenvolvida no futuro assim que a aplicação estiver pronta e falei-vos dos ecrâs da aplicação muito resumidamente.

Neste e nos próximos posts vou falar um bocado em código Kotlin e XML desenvolvido.

Vou começar por falar as primeiras coisas que eu fiz.

Primeira coisa, foi explorar fragments, algo que eu nas aulas de programação mobile nunca explorei. Falaram por alto, mas o foco nas aulas não foi em coisas muito recentes. Falou-se de ListViews, Intents para resultado através da função startActivityForResult. Falou-se das RecyclerView, mas foi numa de experimentar e não de aplicar, mas era válido aplicar.

Explorou-se muito do básico e não muitas coisas assim complexas. Mas com este projeto, decidi dedicar a estudar a documentação do Android Developers(Desenvolvedores Android  |  Android Developers).

Esta é o conjunto de boas práticas de programação Android. Podia consultar as coisas que eu fiz antes, mas o site do Android Developers tem tudo o que é preciso.

Em relação às fragments, porquê eu explorar as fragments ?


Fonte: Android Developers

Precisamente pela questãos das tabs. Como podem ver na segunda imagem, podem ver que é possível navegar de tela para tela, ou seja tabs. Isto são fragments. E para navegar de tela para tela preciso de tabs.
Começamos pela primeira coisa que eu fiz.
TabLayout + ViewPager2:



Aqui não podem ver as tabs mas como vos mostrei ontem,  vocês podem navegar entre fragments. E como é que funciona esta configuração das fragments ?
No Android precisam sempre de um adapter. No caso, precisei de um FragmentStateAdapter. Este adapter refere-se às tabs. Assim surge a classe ElderAppFragmentStateAdapter como podem ver na imagem abaixo:


No caso desta aplicação, ele recebe 2 itens correspondente ao número de tabs. A função createFragment cria os ecrãs que são o ElderFragment(lista de idosos) e o ActivityFragment(gestão das participações).

De seguida na MainActivity iniciei todos os componentes necessários. nomeadamente o adapter que recebe o supportFragmentManager e o lifecycle da activity. 




No onCreate nas linhas 26 e 27 chamo duas funções criadas por mim que fazem a inicialização do ViewPager2 e do TabLayout, a função configureViewPager() e initTabLayout()


Na linha 32 é definido que os gestos de deslizar a tela estão desativados e na linha 33 viewPager recebe o adapter

Na função initTabLayout(), são criadas as tabs tal como podem ver na imagem seguinte:


Nas linhas 40 e 41 são adicionadas duas tabs vazias. Das linhas 43 a 53 é feita a conexão e a configuração das tabs. Desta forma, são configuradas as tabs. Isto fica assim:



Em cima podem ver escrito o nome das duas tabs tal como vos mostrei no post passado.

Aprendizagem:
  • A leitura da documentação ao invés de outras fontes é essencial antes de consultar outras fontes. As outras fontes devem ser consultadas se a documentação não fornecer a resposta pretendida. Por isso a importância de saber investigar nos sítios certos. No caso do Android nada melhor que o próprio Android Developers. Eles têm codelabs a ensinar a usar todos os componentes do Android. Basta procurar.
  • Basear em outros exemplos já existentes. Aprendam uma coisa, na programação poucas vezes inventamos a roda, no entanto há casos que temos mesmo que inventar a roda e no próximo post vou falar de uma situação nesta aplicação que eu tive que procurar alguém que inventou a roda no entanto tive de inventar a roda na mesma porque na realidade as ferramentas que foram usadas pela pessoa que inventou a roda estavam desatualizadas e deprecadas. E as ferramentas que permitiam fazer isso de forma fácil ou seja widgets antigos não funcionavam.