Quando o app está em execução e eu escolho um veiculo e, logo em seguida, volta a página, ele carrega a lista novamente, ficando assim 2 listas repedidas
Quando o app está em execução e eu escolho um veiculo e, logo em seguida, volta a página, ele carrega a lista novamente, ficando assim 2 listas repedidas
Você esta carregando essa lista no metodo protected override async void OnAppearing(), certo?
Ta, para não carregar as duas listas voce deve dar um .Clear() na sua Lista antes de carregar os dados.
Sua lista é uma ObservableCollection, certo?
sim estou.
namespace TesteDrive.Views
{
public partial class ListagemView : ContentPage
{
public ListagemViewModel ViewModel { get; set; }
public ListagemView()
{
InitializeComponent();
this.ViewModel = new ListagemViewModel();
this.BindingContext = this.ViewModel;
}
protected override void OnAppearing()
{
base.OnAppearing();
MessagingCenter.Subscribe<Veiculo>(this, "VeiculoSelecionado",
(msg)=>
{
Navigation.PushAsync(new DetalheView(msg));
});
this.ViewModel.GetVeiculos();
}
protected override void OnDisappearing()
{
base.OnDisappearing();
MessagingCenter.Unsubscribe<Veiculo>(this, "VeiculoSelecionado");
}
}
}
eu pensei que o OnDesappearing retirava a lista
Eu tentaria algo assim
((ObservableCollection)ListViewTiposAtendimentos.ItemsSource).Clear();
Mas você pode criar um Metodo no seu ViewModel que de um Clear na ObservableCollection e voce chama antes de carregar o GetVeiculos().
consegui, usei um
this.Veiculos.Clear();
no
public async void GetVeiculos()
{
Aguarde = true;
this.Veiculos.Clear(); // aqui
HttpClient cliente = new HttpClient();
var resultado = await cliente.GetStringAsync(URLGetVeiculos);
var veiculosJson = JsonConvert.DeserializeObject<VeiculoJson[]>(resultado);
foreach(var veiculoJson in veiculosJson )
{
this.Veiculos.Add(new Veiculo
{
Nome = veiculoJson.nome,
Preco = veiculoJson.preco
});
}
Aguarde = false;
}
obrigado pela ajuda