Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Spinner je widget, který obsahuje rozevírací seznam pro výběr položek. Tato příručka vysvětluje, jak vytvořit jednoduchou aplikaci, která zobrazí seznam voleb ve spinneru a následně úpravy, které zobrazují další hodnoty přidružené k vybrané volbě.
Základní číselník
V první části tohoto kurzu vytvoříte jednoduchý číselník, který zobrazí seznam planet. Když je vybrána planeta, zobrazí se zpráva s vybranou položkou:
Spusťte nový projekt s názvem HelloSpinner.
Otevřete Prostředky/Layout/Main.axml a vložte následující XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:padding="10dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dip"
android:text="@string/planet_prompt"
/>
<Spinner
android:id="@+id/spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:prompt="@string/planet_prompt"
/>
</LinearLayout>
Všimněte si, že TextViewatribut 's android:text a Spinner's android:prompt atribut oba odkazují na stejný řetězcový prostředek. Tento text se chová jako název widgetu. Po použití na položku Spinnerse text nadpisu zobrazí v dialogovém okně pro výběr, které se zobrazí při výběru widgetu.
Upravte prostředky, hodnoty nebo Strings.xml a upravte soubor tak, aby vypadal takto:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">HelloSpinner</string>
<string name="planet_prompt">Choose a planet</string>
<string-array name="planets_array">
<item>Mercury</item>
<item>Venus</item>
<item>Earth</item>
<item>Mars</item>
<item>Jupiter</item>
<item>Saturn</item>
<item>Uranus</item>
<item>Neptune</item>
</string-array>
</resources>
Druhý <string> prvek definuje řetězec názvu, na který TextView odkazuje výše uvedený a Spinner v rozložení.
Element <string-array> definuje seznam řetězců, které se zobrazí jako seznam ve widgetu Spinner .
Nyní otevřete MainActivity.cs a přidejte následující using příkaz:
using System;
Dále vložte následující kód pro metodu OnCreate()):
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
// Set our view from the "Main" layout resource
SetContentView (Resource.Layout.Main);
Spinner spinner = FindViewById<Spinner> (Resource.Id.spinner);
spinner.ItemSelected += new EventHandler<AdapterView.ItemSelectedEventArgs> (spinner_ItemSelected);
var adapter = ArrayAdapter.CreateFromResource (
this, Resource.Array.planets_array, Android.Resource.Layout.SimpleSpinnerItem);
adapter.SetDropDownViewResource (Android.Resource.Layout.SimpleSpinnerDropDownItem);
spinner.Adapter = adapter;
}
Jakmile Main.axml je rozložení nastaveno jako zobrazení obsahu, Spinner widget se zachytí z rozložení pomocí FindViewById<>(int).
CreateFromResource() metoda poté vytvoří novou ArrayAdapter, která váže každou položku v řetězcové matici na počáteční vzhled pro Spinner (což je způsob, jak se každá položka zobrazí v číselníku při výběru). ID Resource.Array.planets_array odkazuje na string-array definované výše a Android.Resource.Layout.SimpleSpinnerItem ID odkazuje na rozložení standardního vzhledu číselníku definovaného platformou.
SetDropDownViewResource je volána k definování vzhledu pro každou položku při otevření widgetu. Nakonec je nastavena ArrayAdapter tak, aby přidružila všechny její položky k Spinner nastavení Adapter vlastnosti.
Nyní zadejte metodu zpětného volání, která upozorní aplikaci, když byla vybrána Spinnerz položky . Tato metoda by měla vypadat takto:
private void spinner_ItemSelected (object sender, AdapterView.ItemSelectedEventArgs e)
{
Spinner spinner = (Spinner)sender;
string toast = string.Format ("The planet is {0}", spinner.GetItemAtPosition (e.Position));
Toast.MakeText (this, toast, ToastLength.Long).Show ();
}
Když je vybrána položka, odesílatel je přetypován na seznam, aby bylo možné k položkám Spinner přistupovat. Position Pomocí vlastnosti v objektu ItemEventArgsmůžete zjistit text vybraného objektu a použít ho k zobrazení objektu Toast.
Spusťte aplikaci; měl by vypadat takto:
Číselník s použitím párů klíč/hodnota
Často je nutné použít Spinner k zobrazení klíčových hodnot, které jsou přidružené k určitému druhu dat používaných vaší aplikací. Vzhledem k tomu Spinner , že nefunguje přímo s páry klíč/hodnota, je nutné uložit dvojici klíč/hodnota samostatně, naplnit Spinner hodnotami klíče a pak pomocí pozice vybraného klíče v číselníku vyhledat přidruženou datovou hodnotu.
V následujících krocích se aplikace HelloSpinner upraví tak, aby zobrazovala průměrnou teplotu pro vybranou planetu:
Do MainActivity.cs přidejte následující using příkaz:
using System.Collections.Generic;
Do třídy přidejte následující proměnnou MainActivity instance.
Tento seznam bude obsahovat páry klíč/hodnota pro planety a jejich střední teploty:
private List<KeyValuePair<string, string>> planets;
OnCreate Do metody před deklarujte následující kódadapter:
planets = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("Mercury", "167 degrees C"),
new KeyValuePair<string, string>("Venus", "464 degrees C"),
new KeyValuePair<string, string>("Earth", "15 degrees C"),
new KeyValuePair<string, string>("Mars", "-65 degrees C"),
new KeyValuePair<string, string>("Jupiter" , "-110 degrees C"),
new KeyValuePair<string, string>("Saturn", "-140 degrees C"),
new KeyValuePair<string, string>("Uranus", "-195 degrees C"),
new KeyValuePair<string, string>("Neptune", "-200 degrees C")
};
Tento kód vytvoří jednoduché úložiště pro planety a jejich přidružené střední teploty. (V reálné aplikaci se databáze obvykle používá k ukládání klíčů a jejich přidružených dat.)
Bezprostředně za výše uvedený kód přidejte následující řádky pro extrahování klíčů a jejich vložení do seznamu (v pořadí):
List<string> planetNames = new List<string>();
foreach (var item in planets)
planetNames.Add (item.Key);
Předejte tento seznam konstruktoru ArrayAdapter (místo planets_array prostředku):
var adapter = new ArrayAdapter<string>(this,
Android.Resource.Layout.SimpleSpinnerItem, planetNames);
Upravte spinner_ItemSelected tak, aby se vybraná pozice použila k vyhledání hodnoty (teploty) přidružené k vybrané planetě:
private void spinner_ItemSelected(object sender, AdapterView.ItemSelectedEventArgs e)
{
Spinner spinner = (Spinner)sender;
string toast = string.Format("The mean temperature for planet {0} is {1}",
spinner.GetItemAtPosition(e.Position), planets[e.Position].Value);
Toast.MakeText(this, toast, ToastLength.Long).Show();
}
Spusťte aplikaci; informační zpráva by měla vypadat takto:
Zdroje informací
Části této stránky jsou upraveny na základě práce vytvořené a sdílené opensourcový projekt Androidu a používají se podle podmínek popsaných vlicenci Creative Commons 2.5 Atribution License.


