删除后Xamarin表单更新列表视图

时间:2016-06-09 08:32:27

标签: listview xamarin xamarin.forms

我有一个列表视图,我想要做的是当我点击一个项目时,会启动一个包含详细信息的新页面。 在这个页面上会有一个删除按钮,如果我按下它,该元素将从数据库中删除,并且页面是popasync以返回列表。

然后我需要更新我的列表视图,目前我通过消息中心使其工作,但我不知道它是否是最佳解决方案。

这是我启动详细信息页面的方式:

cardList.ItemTapped += async (sender, e) =>
{
    await Navigation.PushAsync(new CardDetails((Card) e.Item, database));     
};

这是我的详细信息页面,其中包含删除代码:

var toolbarItem = new ToolbarItem
{
    Name = "Supprimer",
    Command = new Command(this.deleteAndReturn),             
};

private void deleteAndReturn()
{
    database.deleteCard(card);
    Navigation.PopAsync();
    MessagingCenter.Send<CardDetails>(this, "Delete");
}

在我的listPage上,我更新了这样的视图:

MessagingCenter.Subscribe<CardDetails>(this, "Delete", (sender) => {
    cardList.ItemsSource = database.getCards();
});

这是一个好方法吗?我已经这样,我们可以听取像#&#34; popped&#34;但我不知道该怎么听。我认为android中的等价物将是&#34; OnActivityResult&#34;。

3 个答案:

答案 0 :(得分:3)

因此,不是重新设置ItemSource或创建自定义渲染,而是可以使用ObservableCollection来实现此行为。

只需将您的ListView的ItemSource作为ObservableCollection的IEnumarbale。对此列表的任何更改都将直接传播到ListView本身。

答案 1 :(得分:0)

在编辑或删除列表项后没有刷新,因此,在删除事件完成之后,您应该再从数据库获取卡并在列表视图上设置如下:

cardList.ItemsSource = database.getCards();

答案 2 :(得分:0)

您需要为列表视图创建自定义呈现。 在这里,我已经写下了xamarin论坛链接,请关注它。 https://forums.xamarin.com/discussion/38472/refresh-listview-after-deleting-list-item 有多个选项,它正在运作我认为其中一个最适合你。