如何在 UI 中显示预测列表(当用户输入 'Text_Changed' 时来自我的后端代码?Xamarin Forms

How can I display in UI a list of predictions (from my backend code when 'Text_Changed' in the user's entry? Xamarin Forms

我的带有位置自动建议的后端代码运行良好(我可以看到它从我的后端列表中读取位置) 现在我想在 he/she 开始使用 Text_Changed 选项在条目中键入内容时向用户显示该列表。 下面是我的 Text_Changed 方法(“locationText_Changed”)。现在如何在 he/she 开始键入一些文本时向 UI 中的用户显示预测列表?

后端代码:

private async void locationText_Changed(object sender, TextChangedEventArgs e)
    {
        if (location == null)
        {
            await GetLocation();
        }
        string formattedLocation = string.Format("{0}%2C{1}", location.Latitude, location.Longitude);
        List<Prediction> predictionList = await VenueLogic1.GetVenues1(e.NewTextValue, formattedLocation);

还有我的UI:

<StackLayout BackgroundColor="BlanchedAlmond" >
                <Entry x:Name="locationEntry"
                   TextChanged="locationText_Changed"
                   Placeholder="Enter Address"/>
            </StackLayout>

首先:要显示此列表,您需要使用 ListView(在性能问题上更好);

第二:条目可以是 SearchBar.

那么,你可以做什么:

  • 创建一个搜索栏,用户将在上面输入一些数据。
  • 当用户输入时,您的代码将过滤列表并且只显示与输入匹配的内容(如您所述)。

this link中它一步一步地展示了如何实现它。所以也许你会在你的代码中改变一些东西,但结果是专业的。

PS:尝试只在link之后做。如果有任何疑问,请用您所做的更新您的问题,我们将为您提供帮助。玩得开心。

您可以使用数据绑定和 collectionview/listview,将 ItemsSource 设置为您的预测列表,然后更改 locationText_Changed 中的 itemsSource method.like:

    private async void locationText_Changed(object sender, TextChangedEventArgs e)
        {
            if (location == null)
            {
                await GetLocation();
            }
            string formattedLocation = string.Format("{0}%2C{1}", location.Latitude, location.Longitude);
            List<Prediction> predictionList = await VenueLogic1.GetVenues1(e.NewTextValue, formattedLocation);
var newlist=from n in predictionList where n.contains(text)
select n;
mycollectionlist.ItemsSource=newlist;}