3
respostas

Os itens na ListaRefeicoes não aparecem

using System;

using Xamarin.Forms;

namespace AluraNutricao
{
    public class App : Application
    {
        public App()
        {
            // The root page of your application
            MainPage = new HomeTabbedPage();
        }

        protected override void OnStart()
        {
            // Handle when your app starts
        }

        protected override void OnSleep()
        {
            // Handle when your app sleeps
        }

        protected override void OnResume()
        {
            // Handle when your app resumes
        }
    }
}






using System;
using System.Collections.ObjectModel;
using Xamarin.Forms;

namespace AluraNutricao
{
    public class HomeTabbedPage : TabbedPage
    {
        public HomeTabbedPage()
        {
            ObservableCollection<Refeicao> refeicoes = new ObservableCollection<Refeicao>();

            this.Children.Add(new CadastroRefeicao(refeicoes));
            this.Children.Add(new ListaRefeicoes(refeicoes));
        }
    }
}




<?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.CadastroRefeicao" Title="Cadastro de Refeição">
    <ContentPage.Content>
        <StackLayout Padding="25">

            <Label Text="Descrição:" />
            <Entry x:Name="entDescricao" Placeholder="Ex: Pão de Batata" />

            <StackLayout Orientation="Horizontal" >
                <Label Text="Calorias: " />
                <Label Text="0" x:Name="lblCalorias" />
            </StackLayout>
            <Slider Minimum="0" Maximum="1000" x:Name="sldCalorias" ValueChanged="AtualizaContador" />

            <Button Text="Salvar" Clicked="SalvaRefeicao" />

        </StackLayout>
    </ContentPage.Content>
</ContentPage>




using System;
using System.Collections.ObjectModel;
using Xamarin.Forms;

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

        public CadastroRefeicao(ObservableCollection<Refeicao> refeicoes)
        {
            Refeicoes = refeicoes; 
            InitializeComponent();
        }

        public void AtualizaContador(Object sender, EventArgs e)
        {
            double valor = sldCalorias.Value;
            lblCalorias.Text = valor.ToString();
        }

        public void SalvaRefeicao(Object sender, EventArgs e)
        {
            string descricao = entDescricao.Text;
            double valor = sldCalorias.Value;
            Refeicao refeicao = new Refeicao(descricao, valor);
            Refeicoes.Add(refeicao);
            string msg = "A refeição " + descricao + " de " + valor + " calorias foi salva com sucesso";
            DisplayAlert("Salvar Refeição", msg, "OK");
            Clean();
        }

        //public async void MostraLista(Object sender, EventArgs e)
        //{
        //    ListaRefeicoes tela = new ListaRefeicoes(Refeicoes);
        //    await Navigation.PushAsync(tela);
        //}

        public void Clean()
        {
            entDescricao.Text = "";
            sldCalorias.Value = 0;
            lblCalorias.Text = "0";

        }
    }
}




<?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.ListaRefeicoes" Title="Listagem das refeições">
    <ContentPage.Content>
        <StackLayout Padding="25">
             <ListView ItemsSource="{Binding Refeicoes}">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <ViewCell.View>
                                <StackLayout Padding="5" Spacing="1">
                                    <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>



using System;
using System.Collections.ObjectModel;

using Xamarin.Forms;

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

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

}
}



using System;
namespace AluraNutricao
{
    public class Refeicao
    {
        String Descricao { get; set; }
        Double Calorias { get; set; }

        public Refeicao(String descricao, Double calorias)
        {
            Calorias = calorias;
            Descricao = descricao;    
        }

    }
}
3 respostas

Oi Lucas, o código parece estar correto, no console da IDE aparece alguma mensagem?

Abraços.

Não aparece nada Renan.

Estou com o mesmo problema, a lista de refeições não aparece.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.Emit;
using System.Text;


namespace Nutricao.Model
{
    public class Refeicao 
    {
        private String Descricao { get; set; }
        private Double Calorias { get; set; }
        public Refeicao(){}
        public Refeicao(String descricao, Double calorias)
        {
            Descricao = descricao;
            Calorias = calorias;
        }
    }
}
using Nutricao.Model;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Reflection.Emit;
using System.Text;

using Xamarin.Forms;

namespace Nutricao
{
    public class HomeTabbedPage : TabbedPage
    {
        public HomeTabbedPage()
        {
            ObservableCollection<Refeicao> refeicoes = new ObservableCollection<Refeicao>();
            this.Children.Add(new MainPage(refeicoes));
            this.Children.Add(new ListaRefeicoes(refeicoes));
        }
    }
}
<?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="Nutricao.ListaRefeicoes"
             Title="Lista Refeições">

  <ContentPage.Content>

    <StackLayout>
      <ListView ItemsSource="{Binding Refeicoes}">
        <ListView.ItemTemplate>
          <DataTemplate>
            <ViewCell>
              <ViewCell.View>
                <StackLayout>
                  <Label Text="{Binding Descricao}"/>

                  <StackLayout Orientation="Horizontal">
                    <Label Text="Calorias: "/>
                    <Label Text="{Binding Calorias}"/>
                  </StackLayout>

                </StackLayout>
              </ViewCell.View>
            </ViewCell>
          </DataTemplate>
        </ListView.ItemTemplate>
      </ListView>
     </StackLayout>

  </ContentPage.Content>

</ContentPage>
using Nutricao.Model;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Xamarin.Forms;

namespace Nutricao
{
    public partial class ListaRefeicoes : ContentPage
    {
        ObservableCollection<Refeicao> Refeicoes { get; set; }
        public ListaRefeicoes(ObservableCollection<Refeicao> refeicoes)
        {
            BindingContext = this;
            Refeicoes = refeicoes;
            InitializeComponent();

        }
    }
}
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:Nutricao"
             x:Class="Nutricao.MainPage"
             Title="Cadastro de Refeições">
  <StackLayout Padding="25">
    <Label Text="Descrição" />
    <Entry Placeholder="Ex:Salada com carne." x:Name="entDescricao"/>
    <StackLayout>
      <Label Text="Calorias"/>
      <Label x:Name="lblCalorias" Text="0"/>
    </StackLayout>
    <Slider Maximum="1000" Minimum="0" x:Name="sldCalorias" ValueChanged="AtualizaContador"/>
    <Button Text="Salvar" Clicked="SalvarRefeicao"/>
  </StackLayout>

</ContentPage>
using Nutricao.Model;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;

namespace Nutricao
{
    public partial class MainPage : ContentPage
    {
        ObservableCollection<Refeicao> Refeicoes { get; set; }
        public MainPage(ObservableCollection<Refeicao> refeicoes)
        {
            Refeicoes = refeicoes;
            InitializeComponent();

        }

        public void AtualizaContador(Object sender, EventArgs e)
        {
            double valor = sldCalorias.Value;
            lblCalorias.Text = valor.ToString();
        }

        public void SalvarRefeicao(Object sender, EventArgs e)
        {
            String descricao = entDescricao.Text;
            double valor = sldCalorias.Value;

            Refeicao refeicao = new Refeicao(descricao, valor);
            Refeicoes.Add(refeicao);

            Clear();

            String msg = "A refeição "+ descricao + " de "+ valor +" calorias. Foi salva com sucesso!";
            DisplayAlert("Salvar refeição", msg, "Ok");
        }

        public void Clear()
        {
            sldCalorias.Value = 0;
            lblCalorias.Text = "0";
            entDescricao.Text = "";
        }
    }
}