terça-feira, 29 de julho de 2014

Interface do cardápio 100% dinâmica & Listas estáticas

   Olá amigo programero, estou fazendo este post para explicar um pouco melhor como está funcionando nosso aplicativo quando se diz respeito a respeito do recebimento de dados e do que nós fazemos com ele.
   Tudo começa com um Json que nós recebemos do servidor, então fazemos uma verificação perguntando se todos os dados vieram conforme a gente quer. Se não for o caso ele não inicia o aplicativo, apenas informa o problema e pede que você tente novamente.

Eu sei que parece uma indecência mas é um cara de nariz grande sorrindo e usando óculos e esse botão tenta carregar o app novamente.

   Se for o caso então nós recebemos uma série de dados que ficam mais ou menos assim:

{'Cardapio':
  {'Sabores':
 [
    {'Categoria': 'Salgada',
     'Ingredientes': [{'Categoria': 'Padrao', 'Preco': 0.0, 'Nome': 'Molho'},...],
     'Preco': '30,00',
     'Nome': 'Mussarela'},...
  ],
  'Bebidas':
 [
    {'Tamanho': '1l', 'Preco': '10,00', 'Nome': 'Coca Cola'}, ...
 ],
  'Categorias': ['Salgada', 'Doce'],
  'Ingredientes': [{'Categoria': 'queijo', 'Preco': '2,50', 'Nome': 'Mussarela'}, ...]
},
 'Pizzaria': {'Horario_de_funcionamento': '8 da manha ao infinito', 'Descricao': 'Pizza todo dia', 'Localizacao':      'Quebradas da ZL', 'Nome': 'Pizzaria do Joao'}}
   
   Então tratamos esses dados para que populem algumas listas:

- Fazemos uma lista <String> para todas as categorias, futuramente cara uma dessas categorias vai se transformar em uma tab

- Depois populamos um HashMap (que funciona como um dicionário em JAVA) sendo <key, value> = <String, IngredienteModel>, assim temos acesso rápido para qualquer ingrediente e podemos buscá-lo apenas pelo nome. E assim fazemos com bebidas e futuramente com sobremesa.

- Por último e mais difícil, fazemos uma genuína gambiarra colocamos um HashMap dentro de outro  e fica assim : <String (categoria), <String(Nome sabor), SaborModel>> assim podemos ter acesso á todos os sabores por categoria (por tab), e podemos acessá-los pelo nome também.
   No final o que a gente faz é popular as tabs com apenas o nome dos sabores que pertencem a ela, e quando um sabor é selecionado então pegamos o objeto inteiro.

Usar esse mecanismo pode ser desvantajoso para quem tem a internet lenta, pois sem internet não tem aplicativo, mas a vantagem é que o aplicativo fica extremamente flexível as particularidades da pizzaria e uma vez que os dados forem tratados não há necessidade de consultar o servidor ou qualquer banco de dados, o que deixa o aplicativo mais rápido, a desvantagem é que se o usuário fechar o aplicativo ele terá que solicitar os dados novamente.

Nenhum comentário:

Postar um comentário