Ich entwickle eine Xamarin Forms App, es hat eine Registerkarte. Eine der Registerkarten enthält ein Steuerelement ListView
, das Daten zeigt, die von einer Rest-API verbraucht wurden. Wenn ich auf die Schaltfläche "Hinzufügen" tippe, wird ein Modal angezeigt, in dem ich neue Objekte erstellen und Beiträge an die Rest-API senden kann. Nach dem Erfolg knalle ich das Modal aus der Navigation, was die ListView
zeigt. In meinem ListView
wird das letzte hinzugefügte Element nicht angezeigt.Xamarin - Refresh Listview nach Beitrag
Wie kann ich die Aktualisierung der ListView
Aufruf der Rest-API, nachdem ich ein Element hinzufügen?
Hier ist meine XAML Seite: BonosView.xaml
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns ="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:iconize="clr-namespace:FormsPlugin.Iconize;assembly=FormsPlugin.Iconize"
x:Class="rodriguez.BonosView" x:Name="BonosView"
Title="Bonos">
<ContentPage.Padding>
<OnPlatform x:TypeArguments="Thickness" iOS="0, 20, 0, 0" />
</ContentPage.Padding>
<ContentPage.Content>
<StackLayout>
<Label x:Name="BonosListMessage" IsVisible="false" HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand" Text="No exixten bonos para mostrar"/>
<ListView x:Name="BonosList" ItemTapped="ViewDetails" RowHeight="70" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid>
<Grid.Padding>
<OnPlatform x:TypeArguments="Thickness" iOS="10,5" Android="10,5"/>
</Grid.Padding>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label x:Name="monto" Text="{Binding Monto}" Style="{DynamicResource TitleListBono}" Grid.Row="0" Grid.ColumnSpan="2" LineBreakMode="NoWrap" HorizontalOptions="StartAndExpand"/>
<Label x:Name="nombre" Text="{Binding nombreCompleto}" FontSize="Small" FontAttributes="Bold" Grid.Row="1" Grid.Column="0" HorizontalOptions="StartAndExpand"/>
<Label x:Name="estado" Text="{Binding Estado}" FontSize="Small" Grid.Row="1" Grid.Column="1" HorizontalOptions="End" TextColor="Green"/>
<Label x:Name="montoRD" Text="{Binding MontoRD}" FontSize="Small" Grid.Row="2" Grid.Column="0" HorizontalOptions="StartAndExpand"/>
<Label x:Name="fecha" Text="{Binding fechaCompra, StringFormat='{0:dd-MMM-yyyy}'}" FontSize="Small" Grid.Row="2" Grid.Column="1" HorizontalOptions="End"/>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage.Content>
</ContentPage>
Und hier ist die Methode, die ich die Liste füllen rufen:
async void refreshData()
{
this.IsBusy = true;
bonosLista = await manager.GetAll(); //obtaining bonos from Server
if (bonosLista != null)
{
if (bonosLista.Count() > 0)
{
BonosList.ItemsSource = bonosLista;
}
else
{
BonosList.IsVisible = false;
BonosListMessage.IsVisible = true;
}
}
else
{
await DisplayAlert("Error!", "Se ha producido un error en la conexión", "OK");
}
this.IsBusy = false;
}
ich diese Methode nach dem anrufen möchte modale Pops.
Ich würde MessagingCenter verwenden, um eine Nachricht zu senden, nachdem der Beitrag abgeschlossen ist, die dann die LIstView zu aktualisieren seine Daten – Jason
würde, wenn Sie für BonosList.ItemsSource in Ihrem Modell als ObservableCollectionBonosLista dann Liste sollte –
aktualisieren sollte es tun, wenn ich zu drücken die Liste @YuriS –