3
respostas

Valores da lista não aparecem

Já verifiquei todo o código e está idêntico ao do video mas, ao mostrar a lista de refeições aparece o label "Calorias:" em cada refeição e não aparece descrição e nem o valor das calorias. Entendo que a lista está conectada pois aparecem vários labels conforme o número de refeições cadastradas mas não quer aparecer o valor dos {Binding Descrição} e {Bindig Calorias}

Alguém tem alguma dica?

3 respostas

Olá, Ricardo!

Como a lista está mostrando vários itens, é sinal de que o binding do ListView está ok, porém deve ter um problema no binding do item do seu ListView.

Comigo funcionou sem problemas. Eu consigo ver o nome das refeições e o valor das calorias.

Aqui vai o meu arquivo do xaml da listagem. Compare com o seu e veja se está faltando algo:

    <StackLayout Padding="25">
        <ListView ItemsSource="{Binding Refeicoes}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <ViewCell.View>
                            <StackLayout>
                                <Label Text="{Binding Descricao}" FontSize="12" />
                                <StackLayout Orientation="Horizontal">
                                    <Label Text="Calorias:" FontSize="10" />
                                    <Label Text="{Binding Calorias}" FontSize="10" />
                                </StackLayout>
                            </StackLayout>
                        </ViewCell.View>
                        <ViewCell.ContextActions>
                            <MenuItem Command="{Binding RemoveRefeicao}" CommandParameter="{Binding .}" Text="Excluir" IsDestructive="True"></MenuItem>
                        </ViewCell.ContextActions>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackLayout>

Boa sorte e bons estudos!

Descobri que não coloquei Descricao e Calorias como publicas na classe Refeicao. Coisa de principiante. Por este motivo ele não salva a informação. Estranho é o Xamarin não reclamar visto que foram criados os getters e setters.

Verdade, Ricardo, isso acontece bastante quando se usa o padrão MVVM, pois o binding é muito "permissivo" com relação ao nome das propriedades. Outro problema comum também é não respeitar minúsculas/maiúsculas ou não usar o nome exato da propriedade. Acontece bastante com quem usa Angular no JavaScript.

Fico feliz que achou a solução! Um abraço!