Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

SQLite não está removendo dados (Aula 4 Persistencia de dados)

Olá, eu estou usando o MVS2015 e estava criando o aplicativo AluraNutricao do curso de Xamarin. Eu segui os passos mostrados nos vídeos e foi dando tudo certo (com exceção de que eu tive que configurar o SQLite_Android ao inves do SQLite_IOS), o aplicativo está salvando e persistindo os dados, porém na hora de remover, ele remove da lista, mas quando eu fecho o aplicativo e abro novamente os dados continuam lá. Segue meu código:

Refeicao.cs

using SQLite;

namespace AluraNutricao
{
    public class Refeicao
    {
        [PrimaryKey, AutoIncrement]
        public int ID { get; set; }
        public string Descricao { get; set; }
        public double Calorias { get; set; }

        public Refeicao() { }

        public Refeicao(string descricao, double calorias)
        {
            Descricao = descricao;
            Calorias = calorias;
        }
    }
}

RefeicaoDAO.cs

using SQLite;
using System.Collections.ObjectModel;

namespace AluraNutricao.Data
{
    public class RefeicaoDAO
    {
        private SQLiteConnection conexao;
        private ObservableCollection<Refeicao> lista;
        public ObservableCollection<Refeicao> Lista
        {
            get
            {
                if(lista == null)
                {
                    lista = GetAll();
                }
                return lista;
            }
            private set
            {
                lista = value;
            }
        }

        public RefeicaoDAO(SQLiteConnection con)
        {
            conexao = con;
            conexao.CreateTable<Refeicao>();
        }

        public void Salvar(Refeicao refeicao)
        {
            conexao.Insert(refeicao);
            lista.Add(refeicao);
        }

        public void Remove(Refeicao refeicao)
        {
            conexao.Delete<Refeicao> (refeicao.ID);
            lista.Remove(refeicao);
        }

        private ObservableCollection<Refeicao> GetAll()
        {
            return new ObservableCollection<Refeicao>( conexao.Table<Refeicao>());
        }
    }
}

ListagemRefeicao.xaml.cs

using AluraNutricao.Data;
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 ListagemRefeicao : ContentPage
    {
        public ObservableCollection<Refeicao> Refeicoes { get; set; }
        private RefeicaoDAO dao;

        public ListagemRefeicao(RefeicaoDAO dao)
        {
            this.dao = dao;
            Refeicoes = dao.Lista;
            BindingContext = this;
            InitializeComponent();
        }

        public async void AcaoItem(object sender, ItemTappedEventArgs e)
        {
            Refeicao refeicao = e.Item as Refeicao;
            var resposta = await DisplayAlert("Remover Refeição", "Tem certeza que deseja remover a refeição " + refeicao.Descricao + "?", "Sim", "Não");

            if (resposta)
            {
                dao.Remove(refeicao);
                await DisplayAlert("Remover Refeição", "Refeição removida com sucesso!", "Ok");
            }
        }
    }
}

Poderiam me ajudar a descobrir oque pode estar de errado? Obrigado.

1 resposta
solução!

Pessoal... Eu fechei e abri várias vezes o aplicativo, e também o MVS e uma hora deu certo, não entendi bem o porque, mas agora está tudo rodando corretamente.