Как реализовать адресную строку, которую мы видим в картах Google и других приложениях, используя Xamarin - PullRequest
0 голосов
/ 02 июля 2019

Здравствуйте, я новичок в разработке Xamarin.Я пытаюсь реализовать функцию адресной строки в приложении.Когда пользователь начинает вводить адрес, я хочу показать предложения с помощью API Googles place.

Я уже получил вызовы фоновой службы в Google и получил предложения в LIST и пытался связать список в VIEW.Но при привязке происходит сбой приложения, и внешний вид List также выглядит не так, как ожидалось.

Просмотр:

<Entry Placeholder="From Address" x:Name="FromAddressTxtbx" Text="{Binding AddressText}" TextChanged="Handle_TextChanged_1"/>
        <ListView ItemsSource="{Binding Addresses}" >
      <ListView.ItemTemplate>
        <DataTemplate>
             <TextCell Text="{Binding Address}"/>
             </DataTemplate>
             </ListView.ItemTemplate>
           </ListView>

Может ли кто-нибудь предоставить мне предложение или направление? Я хочу, чтобы это было похоже на адресную строку в приложении UBER.

Заранее спасибо

1 Ответ

0 голосов
/ 03 июля 2019

Вот решение об использовании Entry и ListView для отображения обновленного списка при изменении текста в Entry.

Xaml :

<Entry x:Name="MainEntry" TextChanged="MainEntry_TextChanged" Placeholder="Inupt Adress"/>
<ListView x:Name="NameListView" HasUnevenRows="True">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <Label Text="{Binding .}" TextColor="Navy" FontSize="40"/>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

ContentPage : пример данных первой настройки для ListView,

List<string> adressnames = new List<string>()
        {
            "Alabama", "Florida" , "Kentucky" , "Missouri", "North Carolina" ,"South Dakota" , "Wisconsin"
        };
NameListView.ItemsSource = adressnames;

enter image description here

Теперь, когда текст изменен, ListView выведет списокобновленные данные:

private void MainEntry_TextChanged(object sender, TextChangedEventArgs e)
{
    var keyword = MainEntry.Text;
    NameListView.ItemsSource = adressnames.Where(name => name.Contains(keyword));
}

enter image description here

Кстати, , вы также можете использовать SearchBar для достижения этого:

<SearchBar x:Name="MainSearchBar" TextChanged="MainSearchBar_TextChanged"  Placeholder="Inupt Adress"/>

С текстом Измененный метод:

private void MainSearchBar_TextChanged(object sender, TextChangedEventArgs e)
{
    var keyword = MainSearchBar.Text;
    NameListView.ItemsSource = adressnames.Where(name => name.Contains(keyword));
}

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...