در قسمت سی و یکم آموزش اندروید در ادامه آموش قبل ابزار Spinner که بسیار شبیه به ابزار ListView است با وجود ویژگی های بهتر مثل مصرف فضای کمتر و ..
ابزار نمایش ListView لیستی از گزینه هارا نمایش میدهد اما فضای زیادی نیز دربرمیگیرد که این اصلا ویژگی خوبی نخواهد بود پس میتوان از ابزار دیگری به نام Spinner استفاده کنیم که میتوان به آن لیست کشوییی نیز گفت و طبیعتا فضای کمتری را دربرخواهد گرفت.برای درک بیشتر به مثال زیر دقت کنید
پروژه جدیدی به نام View6Prjایجاد کرده و در فایل main.xml چنین یک ابزار Spinner را مطابق زیر ایجاد میکنیم
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Spinner android:id="@+id/spinner1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawSelectorOnTop="true"/> </LinearLayout>
سپس در فایل string.xml در مسیر res\values نیز یک آرایه مانند زیر ایجاد میکنیم
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">view6Prj</string> <string name="hello_world">Hello world!</string> <string-array name="city_array"> <item>Shiraz</item> <item >Teharan</item> <item >Mashhad</item> <item >Kerman</item> <item >Tabriz</item> <item>Yaz</item> <item >Ilam</item> <item>Uromia</item> </string-array> </resources>
حال در فایل جاوا برنامه MainActivity.java چنین کدنویسی میکنیم
package com.example.view6prj; import android.os.Bundle; import android.app.Activity; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.Toast; import android.widget.*; public class MainActivity extends Activity { String[] city; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); city=getResources().getStringArray(R.array.city_array); Spinner s1=(Spinner)findViewById(R.id.spinner1); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, city); s1.setAdapter(adapter); s1.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { int index = arg0.getSelectedItemPosition(); Toast.makeText(getBaseContext(), "You have selected item : " + city[index], Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView<?> arg0) { } }); } }
حال برنامه را اجرا کرده و نتیجه را مطابق تصویر زیر مشاهده کنید
همانگونه که مشاهده میکنید وقتی برروی ابزار Spinner کلیک کنید لیستی ازآرایه را که در فایل string ایجاد کردید را مشادهده میکنید و خواهیددید با انتخاب هرکدام میتوان پیغام مناسب را مشاهده کرد.
مثال بالا شباهت زیادی به مثال ListView دارد البته یک متد ()onNothingSelected وجود دارد که باید برای این ابزار این متد را ایجاد کرد.این متد برای زمانی است که دکمه back زده میشود و بدین معنی است که هیچ یک از گزینه ها انتخاب نشده.
عبارات زیر ابتدا به ()getResources و سپس به ()getStringArray از این طریق میتوان به نام آرایه ای که در فایل string.xml تعریف کرده ایم دسترسی پیدا کنیم
city=getResources().getStringArray(R.array.city_array);
با انتخاب هرکدام از آیتم های درون لیست متد زیر اجرا خواهد شد که پیغامی را متناسب با آیتم انتخاب شده نشان میدهد
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3)
بجای نمایش ساده گزینه هابا استفاده از ArrayAdapter میتوانید این لیست را با استفاده از radioButton نیز نمایش داد برای اینکار دومین پارامتر سازنده کلاس ArrayAdapter را بدین صورت تغییر میدهیم
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_single_choice, city);
در این صورت نتیجه را بدین صورت خواهید دید