C# Xamarin-发布后刷新列表视图
我正在开发一个Xamarin表单应用程序,它有一个选项卡式页面。其中一个选项卡包含一个C# Xamarin-发布后刷新列表视图,c#,rest,listview,xamarin,xamarin.forms,C#,Rest,Listview,Xamarin,Xamarin.forms,我正在开发一个Xamarin表单应用程序,它有一个选项卡式页面。其中一个选项卡包含一个ListView控件,显示从RESTAPI使用的数据。如果我点击add按钮,一个模式显示我可以在哪里创建新项目并向RESTAPI发送post。成功后,我从导航中弹出模式,并显示列表视图。在my列表视图中,未显示最后添加的项目 添加项目后,如何调用RESTAPI刷新列表视图 这是我的XAML页面:BonosView.XAML 我想在模式弹出后调用该方法。我在包含listview的页面上使用了出现的方法,因此当模式
ListView
控件,显示从RESTAPI使用的数据。如果我点击add按钮,一个模式显示我可以在哪里创建新项目并向RESTAPI发送post。成功后,我从导航中弹出模式,并显示列表视图。在my列表视图中,未显示最后添加的项目
添加项目后,如何调用RESTAPI刷新列表视图
这是我的XAML页面:BonosView.XAML
我想在模式弹出后调用该方法。我在包含listview的页面上使用了出现的方法,因此当模式弹出时,我可以在该方法中刷新。也许这不是最好的解决方案,但它现在正在发挥作用
this.Appearing += (object sender, EventArgs e) =>
{
refreshData();
};
最后,我在包含listview的页面上使用了出现的
方法,因此当模式弹出时,我可以在该方法中刷新。也许这不是最好的解决方案,但它现在正在发挥作用
this.Appearing += (object sender, EventArgs e) =>
{
refreshData();
};
使用出现的事件是正确的,但您也不需要在方法上使用异步void
,除非它是事件处理程序
更新刷新数据
方法以使用异步任务
async Task 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;
}
事件处理程序是唯一可以使用async void的地方,因此更新到
this.Appearing += async (object sender, EventArgs e) => {
await refreshData();
};
使用出现的事件是正确的,但您也不需要在方法上使用异步void
,除非它是事件处理程序
更新刷新数据
方法以使用异步任务
async Task 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;
}
事件处理程序是唯一可以使用async void的地方,因此更新到
this.Appearing += async (object sender, EventArgs e) => {
await refreshData();
};
我建议改为使用内置的,这样您就不必刷新整个列表。在“添加”按钮的命令中,使用MessagingCenter发送新的“bonos”项目,并在已呈现列表的页面/视图模型中,订阅该消息以将其添加到已存在的项目集合中。我建议改用内置按钮,这样您就不必刷新整个列表。在“添加”按钮的命令中,使用MessagingCenter发送新的“bonos”项目,在已呈现列表的页面/视图模型中,订阅该消息以将其添加到已存在的项目集合中。我将在Post完成后使用MessagingCenter发送消息,这将告诉LIstView刷新它的数据如果您在模型中将BonoList.ItemsSource的绑定定义为ObservableCollectionBonoLista那么列表应该更新如果我推到列表@Yuris,那么“推”是什么意思?这一行应该这样做:BonosList.ItemsSource=bonosLista;push=将对象添加到列表我将在Post完成后使用MessagingCenter发送消息,然后通知LIstView刷新其数据如果您将模型中的BonoList.ItemsSource定义为ObservableCollection BonoLista然后列表应该更新如果我推到列表@Yuris,那么“推”是什么意思?这一行应该这样做:BonosList.ItemsSource=bonosLista;push=将对象添加到列表中