Mobiele apps programmeren met Xamarin – Praktische voorbeelden – Zoeken naar tekst

print
Deze tip maakt deel uit van het programmeertraject:


Zoeken naar tekst

Zoek specifieke tekst in een tekstvak.

Om dit uit te testen maakt u een nieuw project aan.

XAML

Om tekst te zoeken kunt u gebruik maken van de Editor en de SearchBar.

  • Pas de XAML van de pagina Mainpage.xaml als volgt aan:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:Zoeken" x:Class="Zoeken.MainPage">

    <StackLayout>
        <SearchBar x:Name="ZoekTekst" Placeholder="Zoeken naar..." SearchButtonPressed="ZoekTekst_SearchButtonPressed" ></SearchBar>
        <Editor x:Name="Tekst" Text="Mijn naam is Geert." VerticalOptions="FillAndExpand"></Editor>
    </StackLayout>
</ContentPage>

Code-behind

Er is reeds een event voorzien SearchButtonPressed="ZoekTekst_SearchButtonPressed" die uitgevoerd wordt als de gebruiker op de zoekknop drukt. De event werkt asynchroon zodat het aanroepen van de DisplayAlert andere lopende acties niet tegenhoudt.

  • Pas de code behind in MainPage.xaml.cs als volgt aan.
using System;
using Xamarin.Forms;

namespace Zoeken
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private async void ZoekTekst_SearchButtonPressed(object sender, EventArgs e)
        {
            if(Tekst.Text.IndexOf(ZoekTekst.Text.Trim()) > 0)
            {
                await DisplayAlert("Zoeken", "De tekst is gevonden op positie " + Tekst.Text.IndexOf(ZoekTekst.Text) + "!", "OK");
            }
            else
            {
                await DisplayAlert("Zoeken", "De tekst is niet gevonden!", "OK");
            }
        }
    }
}

De conditie if(Tekst.Text.IndexOf(ZoekTekst.Text.Trim()) > 0) vraagt wellicht wat meer duiding.

  • Met ZoekTekst.Text.Trim() wordt de tekst uit het zoekvak opgehaald en spaties aan het begin of het einde worden weggelaten door het gebruik van Trim().
  • Er wordt gecontroleerd of de te zoeken tekst voorkomt in de tekst Tekst.Text.IndexOf(ZoekTekst.Text.Trim()) door gebruik te maken van IndexOf().
  • Als de tekst voorkomt geeft IndexOf() de positie weer waar de tekst, het eerst, gevonden is (beginnen te tellen bij 0). Is de tekst niet gevonden dan geeft IndexOf() de waarde -1 terug.

Geef een reactie

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.

  • Abonneer je op deze website d.m.v. e-mail

    Voer je e-mailadres in om je in te schrijven op deze website en e-mailmeldingen te ontvangen van nieuwe berichten.