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

ListagemVeiculos carrega varias listas

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

4 respostas

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().

solução!

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

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software