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.