如何在完成所有更新程序时显示纺车
本文关键字:程序 显示 更新 | 更新日期: 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.IsRefreshing
为pumpsManager.isLoading
- 在
FuelPumpsDataManager
上实现INotifyPropertyChanged并在isLoading
上实现。注意,你需要将'isLoading'转换为一个属性。另一种更简单的方法是使用PropertyChanged。Fody NuGet包。
现在你可以设置isLoading
,当它开始和停止加载时,你的ListView应该相应地显示动画