Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Valor não aprece na Lista de refeições

Dei uma olhada no Forum e vi que varias pessoas estão com o mesmo problema e em nenhum dos tópicos achei uma solução.

Depois de cadastrar a refeição ela não está aparecendo na listagem.

Refeição .cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AluraNutricao
{
    public class Refeicao
    {
        public string Descricao;
        public double Calorias;

        public Refeicao(String descricao, double calorias)
        {
            this.Descricao = descricao;
            this.Calorias = calorias;
        }

    }
}

ListaDeRefeiao.xaml

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="AluraNutricao.ListaDeRefeicao"
             Title="Lista de Refeição">

  <ContentPage.Content>
    <StackLayout>
      <ListView ItemsSource="{Binding Refeicoes}" ItemTapped="AcaoItem">
        <ListView.ItemTemplate>
          <DataTemplate>
            <ViewCell>
              <ViewCell.View>
                <StackLayout>
                  <Label Text="{Binding Descricao}" FontSize="12"/>
                  <StackLayout Orientation="Horizontal">
                    <Label Text="{Binding Calorias}" FontSize="10"/>
                    <Label Text="Calorias" FontSize="10"/>
                  </StackLayout>
                </StackLayout>
              </ViewCell.View>
            </ViewCell>
          </DataTemplate>
        </ListView.ItemTemplate>
      </ListView>
    </StackLayout>
  </ContentPage.Content>
</ContentPage>

ListaDeRefeicao.cs

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Xamarin.Forms;

namespace AluraNutricao
{
    public partial class ListaDeRefeicao : ContentPage
    {
        public ObservableCollection<Refeicao> Refeicoes { get; set; }

        public ListaDeRefeicao(ObservableCollection<Refeicao> refeicoes)
        {
            BindingContext = this;
            Refeicoes = refeicoes;
            InitializeComponent();
        }

        public async void AcaoItem(Object sender, ItemTappedEventArgs e)
        {
            Refeicao refeicao = e.Item as Refeicao;
            var resposta = await DisplayAlert("Remover Refeição", "Deseja Remover a Refeição?", "Sim", "Não");

            if (resposta)
            {
                Refeicoes.Remove(refeicao);
                await DisplayAlert("Remover Refeição", "Refeição Removida com Sucesso", "OK");
            }
        }
    }
}
4 respostas

Olá, Marcos! Vou precisar de algumas informações a mais. Você pode postar o código da sua classe RefeicaoDAO?

Olá Marcelo, a minha classe Refeicao é essa a baixo, é isso? Desculpa eu sou novato nessa área rsrs.

Obrigado.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AluraNutricao
{
    public class Refeicao
    {
        public string Descricao;
        public double Calorias;

        public Refeicao(String descricao, double calorias)
        {
            this.Descricao = descricao;
            this.Calorias = calorias;
        }

    }
}
solução!

Bom dia Marcelo, hoje refazendo alguns testes me dei conta de que faltava o GET e o SET na classe Refeicao.

Agora está funcionando corretamente.

valeww.

Excelente, Marcos! Obrigado por participar do fórum. Sempre às ordens!