Android Xamarin表单列表视图项选定功能

Android Xamarin表单列表视图项选定功能,android,listview,async-await,xamarin.android,xamarin.forms,Android,Listview,Async Await,Xamarin.android,Xamarin.forms,以下是从列表视图中选择项时调用的函数: async void detail_clicked(object sender, SelectedItemChangedEventArgs e){ if (e.SelectedItem == null) { return; } Detail selected = (Detail)e.SelectedItem; order_vm.List_of_details.Add(selected); aw

以下是从
列表视图中选择项时调用的函数:

async void detail_clicked(object sender, SelectedItemChangedEventArgs e){
    if (e.SelectedItem == null) {
            return;
    }
    Detail selected = (Detail)e.SelectedItem;
    order_vm.List_of_details.Add(selected);
    await DisplayAlert ("Item Added", 
        String.Format ("{0} added to cart.", selected.detail_name), "Okay");
    ((ListView)sender).SelectedItem = null;
}
我使用
ItemSelected
事件处理程序添加了此函数

details_list.ItemSelected += detail_clicked;
我第一次单击该项目时,会弹出
DisplayAlert
。第一次单击后,单击的
DisplayAlert
内部
detail\u不再弹出。但是处理程序中的其他代码确实会被调用


有人知道如何解决这个问题吗?是不是我对事件处理程序不太了解?是关于wait/async的吗?

DisplayAlert可能正在另一个线程上运行。尝试在
设备中包装显示警报。BeginInvokeMainThread
。您可以对此做好准备。

DisplayAlert可能正在另一个线程上运行。尝试在
设备中包装显示警报。BeginInvokeMainThread
。您可以准备好了。

请在不使用异步开启方法的情况下再次检查,并在DisplayAlert()上等待。

请在不使用异步开启方法的情况下再次检查,并在DisplayAlert()上等待。

使用以下代码。它会帮助你的

private void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
    {
        if (e.SelectedItem == null)
        {

            return;

        }

        listView.SelectedItem = null;

        DisplayAlert("Alert", e.SelectedItem.ToString(), "Ok");

    }

使用以下代码。它会帮助你的

private void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
    {
        if (e.SelectedItem == null)
        {

            return;

        }

        listView.SelectedItem = null;

        DisplayAlert("Alert", e.SelectedItem.ToString(), "Ok");

    }

您是否尝试过将
itemtrapped
事件用于
ListView
?如前所述,这两项活动的实施存在差异。我通常总是使用
itemstapped
来监听用户点击
ListView
中我希望处理的元素的事件(例如,导航到新页面编辑项目,打开删除项目的显示警报等)。是,除了将此函数附加到
itemtrapped
事件之外,我尝试了相同的过程,得到了相同的结果。有什么想法吗?您是否尝试过将
项目点击
事件用于
列表视图
?如前所述,这两项活动的实施存在差异。我通常总是使用
itemstapped
来监听用户点击
ListView
中我希望处理的元素的事件(例如,导航到新页面编辑项目,打开删除项目的显示警报等)。是,除了将此函数附加到
itemtrapped
事件之外,我尝试了相同的过程,得到了相同的结果。有什么想法吗?