en / de
AI
Expertisen
Methoden
Dienstleistungen
Referenzen
Jobs & Karriere
Firma
Technologie-Trends TechCast WebCast TechBlog News Events Academy

Pull to Refresh mit Xamarin.Forms 1.4

Xamarin.Forms stellt ab der Version 1.4 die Funktionalität Pull to Refresh zur Verfügung. Damit ist es dem Benutzer möglich eine ListView selbständig zu aktualisieren.

public event EventHandler Refreshing;

public bool IsPullToRefreshEnabled { get; set; } = false;
public bool IsRefreshing { get; set; } = false;
public ICommand RefreshCommand { get; set; } = null;

public void BeginRefresh ();
public void EndRefresh ();

Sobald der Benutzer die «Pull to Refresh» Funktion ausführt, wird der RefreshCommand aufgerufen, der Refreshed-Event ausgelöst und  IsRefreshing wird auf True gesetzt. Anschliessend wird eine plattformabhängige Animation solange sichtbar, bis IsRefreshing auf False gesetzt oder beim Event die EndRefresh-Methode aufgerufen wird. Mit MVVM verwende ich den RefreshCommand zusammen mit dem IsRefreshing-Flag wie folgt. Zuerst die View mit der ListView:

<ListView x:Name="listViewNews" 
          ItemsSource="{Binding ListNews}"
          IsPullToRefreshEnabled="True"
          RefreshCommand="{Binding LoadNewsCommand}"
          IsRefreshing="{Binding IsBusy}"
          HasUnevenRows="True">

Das dazugehörige ViewModel implementiert den RefreshCommand und setzt IsBusy auf False sobald die ListView mit den aktuellsten News geladen wurde.

private bool _isBusy;
public bool IsBusy
{
    get
    {
        return _isBusy;
    }
    set
    {
        _isBusy = value;
        // Mit der ViewModelBase-Klasse von GalaSoft.MvvmLight muss nur diese
        // Funktion aufgerufen werden anstatt OnPropertyChanged("IsBusy").
        RaisePropertyChanged();
    }
}

private Command _loadNewsCommand;
public ICommand LoadNewsCommand
{
    get
    {
        return _loadnewsCommand ?? (_loadNewsCommand = 
               new Command(RefreshNews, () => !IsBusy));
    }
}

private async void RefreshNews()
{
    IsBusy = true;

    // Refresh all News and update ListView
            
    IsBusy = false;
}

Da ich IsBusy auf True setzte sobald der RefreshCommand aufgerufen wird, kann ich IsBusy auch gleich für die CanExecute-Methode verwenden.

Fazit

Mit Xamarin.Forms 1.4 kann ohne grossen Aufwand ein Feature in die Mobile-App implementiert werden, welches für iOS- und Android Benutzer zum Standard gehört und von den meisten schlicht erwartet wird.

Kommentare

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Newsletter - aktuelle Angebote, exklusive Tipps und spannende Neuigkeiten

 Jetzt anmelden

Copyright © 2025 Noser Engineering AG – Alle Rechte vorbehalten.

NACH OBEN
Privacy Policy Cookie Policy
Zur Webcast Übersicht