如何在完成所有更新程序时显示纺车

本文关键字:程序 显示 更新 | 更新日期: 2023-09-27 18:08:02

我目前正在做一些用Xamarin.Forms编写的移动项目。我有个问题。我需要更新我的listview包含一些数据。所以我启用了IsPullToRefreshEnabled = true

listView.Refreshing += (sender, e) => {
    method1();
    method2();
    listView.EndRefresh();
};

然而,我不确定,如何使旋转指示器显示直到所有更新例程完成。

public class Class1 : ContentPage
{
    readonly Class2 mangr = new Class2();
    void BuildUI()
    {
        listView = new ListView
        {
            ItemsSource = new object[] { },
            ItemTemplate = new DataTemplate(listRender.MakeCell),
            RowHeight = 88,
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.FillAndExpand,
            IsPullToRefreshEnabled = true,
            IsRefreshing = false,
        };
        listView.Refreshing += (sender, e) =>
        {
            listView.IsRefreshing = true;
            manager.ForceUpdate();
            listView.IsRefreshing = false;
            listView.EndRefresh();
        };
    }
}
public class Class2
{
    public bool updating = false;
    public void PleaseUpdate()
    {
        if (!running)
        {
            return;
        }
        if (!data.loading)
        {
            updating = true; 
            PleaseUpdate();
            updating = false;
        }
    }
    void PleaseUpdate(Action afterall = null){/some code/}
}

如何在完成所有更新程序时显示纺车

您是指PullToRefresh ActivityIndicator吗?为此,您必须将IsRefreshing属性设置为true。因此,只要在开始时将其设置为true,并在准备好时将其设置为false,就像这样。

listView.Refreshing += (sender, e) =>  { 
    listView.IsRefreshing = true;
    method1();
    method2();
    listView.IsRefreshing = false;
    listView.EndRefresh();
};

如果方法是async,这将不起作用,因为它将直接转到IsRefreshing = false

有多种方法可以做到这一点,运行它们同步,这可能不是你想要的,或者创建一个公共属性,你绑定到listView.IsRefreshing属性。然后在你真正完成加载的地方设置那个属性!

如您所提供的代码,一种方法是这样做:
  • 设置listView.IsRefreshingpumpsManager.isLoading
  • FuelPumpsDataManager上实现INotifyPropertyChanged并在isLoading上实现。注意,你需要将'isLoading'转换为一个属性。另一种更简单的方法是使用PropertyChanged。Fody NuGet包。

现在你可以设置isLoading,当它开始和停止加载时,你的ListView应该相应地显示动画