ObservableCollection not showing any items on ListView

660 Views Asked by At

I am trying to bind a ObservableCollection on a ListView ItemsSource but it doesn't show anything to me, tried binding inside code, on the xaml..

    public partial class ReadPage : ContentPage
    {
        private CarregarClientes _CClientes = new CarregarClientes();
        private MySQLCon _db = new MySQLCon();
        private MySQLConOverloads _over = new MySQLConOverloads();
        private MySQLiteCon _dbSqLiteCon = new MySQLiteCon();
        private MySQLiteConOverloads _oversqlite = new MySQLiteConOverloads();

        //MY OBSERVABLECOLLECTION DEFINITION -----------------------------
        public ObservableCollection<Clientes> _ClientesList { get; set; }

        private string _tabela = "Clientes";
        public ReadPage()
        {
            InitializeComponent();
            backBtn.Clicked += async (s, o) => await Navigation.PopModalAsync();
            //Method used to populate the ObservableCollection (_ClientesList);
            PopularObservableCollection();
        }

I am defining the ObservableCollection inside my ReadPage class, then populating it with a method called PopularObservableCollection.

        public void PopularObservableCollection()
        {
            _ClientesList = new ObservableCollection<Clientes>();
            int quantidadeDados = _CClientes.CNumeroItems() -1;
            List<string> id = _CClientes.Cid();
            List<string> debito =  _CClientes.CDebito();
            List<string> endereco = _CClientes.CEndereco();
            List<string> nome = _CClientes.CNome();
            List<string> observacao = _CClientes.CObservacao();
            List<string> saldo = _CClientes.CSaldo();
            List<string> telefone = _CClientes.CTelefone();
            
            for (int i = 0; i <= quantidadeDados; i++)
            {
                _ClientesList.Add(new Clientes
                {
                    id = id[i],
                    Debito = debito[i], 
                    Endereco = endereco[i], 
                    Nome = nome[i],
                    Observacao = observacao[i],
                    Saldo = saldo[i],
                    Telefone = telefone[i]
                });
            }
        }

Clientes.cs:

    public class Clientes : BindableObject
    {
        public string id { get; set; }
        public string Nome { get; set; }
        public string Endereco { get; set; }
        public string Telefone { get; set; }
        public string Debito { get; set; }
        public string Saldo { get; set; }
        public string Observacao { get; set; }
    }

My list view screenshot, nothing inside it

XAML:

             <ListView
                BindingContext="{Binding Source={x:Reference MyPage}, Path=.}"
                x:Name="readListView" 
                BackgroundColor="PaleVioletRed"
                HasUnevenRows="True"
                CachingStrategy="RecycleElement"
                HorizontalOptions="FillAndExpand" 
                ItemsSource="{Binding _ClientesList}"
                VerticalOptions="FillAndExpand"
                ItemTapped="ReadListView_OnItemTapped">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <Grid>
                                <Label Text="Id:" Grid.Row="0"/>
                                <Label Text="{Binding id}" Grid.Row="0" Margin="10,0,0,0"/>
                                <Label Text="{Binding Nome}" Grid.Row="1" />
                            </Grid>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
0

There are 0 best solutions below