public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position) { // loads the data at the specified position into the views whose // references are stored in the given view holder AlimentoEstabelecimento alimentoEstabelecimento = Resultados[position]; ResultadoViewHolder vh = holder as ResultadoViewHolder; byte[] foto = alimentoEstabelecimento.Alimento.Foto; float? preco = alimentoEstabelecimento.Alimento.Preco; // Campos opcionais if (foto != null) { vh.FoodImage.SetImageBitmap(BitmapFactory.DecodeByteArray(foto, 0, foto.Length)); } if (preco.HasValue) { vh.Price.Text = preco + "€"; } // Campos obrigatórios vh.FoodName.Text = alimentoEstabelecimento.Alimento.Designacao; vh.Rating.Rating = alimentoEstabelecimento.Alimento.ClassificacaoMedia; vh.RestaurantName.Text = alimentoEstabelecimento.Estabelecimento.Nome; vh.Distance.Text = string.Format("{0:F2} Km", alimentoEstabelecimento.Distancia / 1000.0f); vh.Street.Text = alimentoEstabelecimento.Estabelecimento.Morada; vh.Contact.Text = alimentoEstabelecimento.Estabelecimento.ContactoTel; }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.AlimentoPerfil); foto = FindViewById <ImageView>(Resource.Id.picAlimentoPerfilImageView); textViewAlimento = FindViewById <TextView>(Resource.Id.nomeAlimentoPerfilTextView); barraRating = FindViewById <RatingBar>(Resource.Id.ratingAlimentoPerfilRatingBar); textViewRestaurante = FindViewById <TextView>(Resource.Id.restauranteAlimentoPerfilTextView); textViewDistancia = FindViewById <TextView>(Resource.Id.distanciaAlimentoPerfilTextView); textViewRua = FindViewById <TextView>(Resource.Id.ruaAlimentoPerfilTextView); textViewContacto = FindViewById <TextView>(Resource.Id.contactoAlimentoPerfilTextView); textViewPreco = FindViewById <TextView>(Resource.Id.precoAlimentoPerfilTextView); labelIngredientes = FindViewById <TextView>(Resource.Id.ingrAlimentoPerfilTextView); textViewIngredientes = FindViewById <TextView>(Resource.Id.ingredientesAlimentoPerfilTextView); textViewRestaurante.Click += HandlerClickRestaurante; // Botões botaoHorario = FindViewById <Button>(Resource.Id.horarioPerfilButton); botaoComentarios = FindViewById <Button>(Resource.Id.comentariosPerfilButton); botaoPartilha = FindViewById <Button>(Resource.Id.partilhaPerfilButton); botaoMapa = FindViewById <ImageButton>(Resource.Id.direcoesAlimentoPerfilButton); botaoHorario.Click += HandlerBotaoHorario; botaoComentarios.Click += HandlerBotaoComentarios; botaoPartilha.Click += HandlerBotaoPartilha; botaoMapa.Click += HandlerBotaoMapa; alimentoEstabelecimento = (AlimentoEstabelecimento)Intent.GetParcelableExtra("alimentoEstabelecimento"); byte[] fotoAlimento = alimentoEstabelecimento.Alimento.Foto; float? preco = alimentoEstabelecimento.Alimento.Preco; ISet <string> ingredientes = alimentoEstabelecimento.Alimento.Ingredientes; // Campos opcionais if (fotoAlimento != null) { foto.SetImageBitmap(BitmapFactory.DecodeByteArray(fotoAlimento, 0, fotoAlimento.Length)); } if (preco.HasValue) { textViewPreco.Text = preco + "€"; } if (ingredientes != null) { textViewIngredientes.Text = string.Join(", ", ingredientes); } // Campos obrigatórios textViewAlimento.Text = alimentoEstabelecimento.Alimento.Designacao; barraRating.Rating = alimentoEstabelecimento.Alimento.ClassificacaoMedia; textViewRestaurante.SetTextColor(Color.ParseColor("#4286f4")); textViewRestaurante.Text = alimentoEstabelecimento.Estabelecimento.Nome; textViewDistancia.Text = string.Format("{0:F2} Km", alimentoEstabelecimento.Distancia / 1000.0f); textViewRua.Text = alimentoEstabelecimento.Estabelecimento.Morada; textViewContacto.Text = alimentoEstabelecimento.Estabelecimento.ContactoTel; textViewIngredientes.Selected = true; textViewIngredientes.Click += (sender, args) => { textViewIngredientes.Selected = !textViewIngredientes.Selected; }; }
void OnItemClick(object sender, int position) { AlimentoEstabelecimento itemSelecionado = resultados[position]; var intent = new Intent(this, typeof(PerfilAlimentoActivity)); // handler for the itemClick event; // It should just start a PerfilAlimentoActivity // of the item clicked // if we pass with an intent the info that we already // have on the item to the new activity we wont need // to retrieve those bits of info from the database intent.PutExtra("alimentoEstabelecimento", itemSelecionado); StartActivity(intent); }
//===================================================================== // PEDIDOS E CONSULTAS //===================================================================== public List <AlimentoEstabelecimento> EfetuarPedido(string termo, Location localizacao) { RegistaPedidoHistorico(termo); PedidoProcessado pedidoProcessado = new PedidoProcessado(termo); ISet <string> preferencias = new HashSet <string>(); ISet <string> naoPreferencias = new HashSet <string>(); //----------------------------------------------------- // Obtenção das Preferências e Não Preferências //----------------------------------------------------- if (clienteAutenticado != 0) { // cliente Cliente cliente = clientes.ObterPorId(clienteAutenticado); preferencias = cliente.ObterPreferencias(pedidoProcessado.NomeAlimento); ISet <string> preferenciasPedido = pedidoProcessado.Preferencias; preferencias.UnionWith(preferenciasPedido); naoPreferencias = cliente.ObterNaoPreferencias(pedidoProcessado.NomeAlimento); ISet <string> naoPreferenciasPedido = pedidoProcessado.NaoPreferencias; naoPreferencias.UnionWith(naoPreferenciasPedido); } else { // utilizador não autenticado preferencias = pedidoProcessado.Preferencias; naoPreferencias = pedidoProcessado.NaoPreferencias; } Console.WriteLine("PUTA DEITA-TE: "); foreach (var p in naoPreferencias) { Console.Write(p + ","); } //---------------------------------------------------------------------------------------------------- // Obtenção dos Estabelecimentos e respetivos Alimentos que não contêm não preferências do utilizador //---------------------------------------------------------------------------------------------------- List <AlimentoEstabelecimento> listaAEs = new List <AlimentoEstabelecimento>(); IDictionary <int, Estabelecimento> estabsObtidos = new Dictionary <int, Estabelecimento>(); foreach (Alimento a in estabelecimentos.ObterAlimentos(pedidoProcessado.NomeAlimento)) { if (!a.ContemNaoPreferencias(naoPreferencias)) // se não contém não preferências { Alimento alim = estabelecimentos.ObterAlimento(a.Id); int nPreferencias = a.QuantasPreferenciasContem(preferencias); int idEstab = alim.IdEstabelecimento; Estabelecimento estab; Console.WriteLine(alim.Id); if (estabsObtidos.TryGetValue(idEstab, out estab) == false) { estab = estabelecimentos.ObterEstabelecimento(idEstab); estabsObtidos.Add(idEstab, estab); } float distancia = localizacao.DistanceTo(estab.Coords); AlimentoEstabelecimento ae = new AlimentoEstabelecimento(nPreferencias, distancia, estab, alim); listaAEs.Add(ae); } } listaAEs.Sort(); return(listaAEs); }