Xamarin.Android 회전자
Spinner
는 항목을 선택하기 위한 드롭다운 목록을 표시하는 위젯입니다. 이 가이드에서는 회전자의 선택 목록을 표시하는 간단한 앱을 만든 다음 선택한 선택 항목과 연결된 다른 값을 표시하는 수정 사항을 만드는 방법을 설명합니다.
기본 회전자
이 자습서의 첫 번째 부분에서는 행성 목록을 표시하는 간단한 스피너 위젯을 만듭니다. 행성을 선택하면 선택한 항목이 알림 메시지에 표시됩니다.
HelloSpinner라는 새 프로젝트를 시작합니다.
Resources/Layout/Main.axml을 열고 다음 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>
TextView
'의 android:text
특성과 Spinner
'의 android:prompt
특성은 모두 동일한 문자열 리소스를 참조합니다. 이 텍스트는 위젯의 제목으로 동작합니다. 에 적용 Spinner
하면 위젯을 선택할 때 나타나는 선택 대화 상자에 제목 텍스트가 표시됩니다.
리소스/값/Strings.xml 편집하고 다음과 같이 파일을 수정합니다.
<?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>
두 번째 <string>
요소는 위 레이아웃에서 참조하는 TextView
제목 문자열을 정의합니다 Spinner
.
요소는 <string-array>
위젯의 목록으로 표시될 문자열 목록을 Spinner
정의합니다.
이제 MainActivity.cs 열고 다음 using
문을 추가합니다.
using System;
다음으로 ) 메서드에 대해 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;
}
레이아웃이 Main.axml
콘텐츠 보기 Spinner
로 설정되면 위젯이 레이아웃 FindViewById<>(int)
에서 캡처됩니다.
입니다.CreateFromResource()
메서드는 문자열 배열의 각 항목을 초기 모양 Spinner
에 바인딩하는 새 ArrayAdapter
항목을 만듭니다(선택할 때 각 항목이 스피너에 표시되는 방식). ID는 위에서 정의한 것을 string-array
참조하고 Android.Resource.Layout.SimpleSpinnerItem
ID는 Resource.Array.planets_array
플랫폼에서 정의한 표준 회전자 모양에 대한 레이아웃을 참조합니다.
SetDropDownViewResource
는 위젯을 열 때 각 항목의 모양을 정의하기 위해 호출됩니다. 마지막으로 속성을 ArrayAdapter
설정하여 모든 항목을 해당 항목과 Spinner
연결하도록 설정됩니다 Adapter
.
이제 항목이 선택되었을 때 애플리케이션에 알리는 콜백 메서드를 Spinner
제공합니다. 이 메서드는 다음과 같습니다.
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 ();
}
항목을 선택하면 보낸 사람에게 캐스팅되어 항목에 Spinner
액세스할 수 있습니다. 속성을 Position
ItemEventArgs
사용하여 선택한 개체의 텍스트를 찾아서 표시 Toast
할 수 있습니다.
애플리케이션을 실행합니다. 다음과 같이 표시됩니다.
키/값 쌍을 사용하는 회전자
앱에서 사용하는 데이터 종류와 연결된 키 값을 표시하는 데 사용해야 Spinner
하는 경우가 많습니다. Spinner
키/값 쌍에서 직접 작동하지 않으므로 키/값 쌍을 별도로 저장하고 키 값으로 채웁 Spinner
니다. 그런 다음, 회전자에서 선택한 키의 위치를 사용하여 연결된 데이터 값을 조회해야 합니다.
다음 단계에서 는 HelloSpinner 앱이 수정되어 선택한 행성의 평균 온도를 표시합니다.
다음 문을 MainActivity.cs 추가합니다using
.
using System.Collections.Generic;
클래스에 다음 인스턴스 변수를 추가합니다 MainActivity
.
이 목록에는 행성 및 해당 평균 온도에 대한 키/값 쌍이 포함됩니다.
private List<KeyValuePair<string, string>> planets;
메서드에서 OnCreate
선언되기 전에 adapter
다음 코드를 추가합니다.
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")
};
이 코드는 행성 및 관련 평균 온도에 대한 간단한 저장소를 만듭니다. (실제 앱에서 데이터베이스는 일반적으로 키와 연결된 데이터를 저장하는 데 사용됩니다.)
위의 코드 바로 다음에 다음 줄을 추가하여 키를 추출하고 순서대로 목록에 넣습니다.
List<string> planetNames = new List<string>();
foreach (var item in planets)
planetNames.Add (item.Key);
이 목록을 ArrayAdapter
생성자에 전달합니다(리소스 대신 planets_array
).
var adapter = new ArrayAdapter<string>(this,
Android.Resource.Layout.SimpleSpinnerItem, planetNames);
선택한 위치가 선택한 행성과 연결된 값(온도)을 조회하는 데 사용되도록 수정 spinner_ItemSelected
합니다.
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();
}
애플리케이션을 실행합니다. 알림은 다음과 같이 표시됩니다.
리소스
이 페이지의 일부는 Android 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에따라 사용되는 작업을 기반으로 하는 수정 사항입니다.