اسپینرها راهی سریع برای انتخاب یک مقدار از مجموعه ارائه می دهند. در حالت پیش فرض، یک اسپینر مقدار انتخابی فعلی خود را نشان می دهد. با ضربه زدن روی اسپینر منویی نمایش داده می شود که تمام مقادیر دیگری را که کاربر می تواند انتخاب کند نشان می دهد.
میتوانید با شی Spinner
یک اسپینر به طرحبندی خود اضافه کنید، که معمولاً در طرحبندی XML خود با عنصر <Spinner>
انجام میدهید. این در مثال زیر نشان داده شده است:
<Spinner android:id="@+id/planets_spinner" android:layout_width="match_parent" android:layout_height="wrap_content" />
برای پر کردن اسپینر با لیستی از گزینهها، یک SpinnerAdapter
در کد منبع Activity
یا Fragment
خود مشخص کنید.
اگر از اجزای طراحی متریال استفاده می کنید، منوهای کشویی در معرض نمایش معادل Spinner
هستند.
اسپینر را با انتخاب های کاربر پر کنید
انتخابهایی که برای اسپینر ارائه میکنید میتوانند از هر منبعی باشند، اما باید آنها را از طریق یک SpinnerAdapter
ارائه کنید، مانند ArrayAdapter
اگر انتخابها در یک آرایه در دسترس هستند یا CursorAdapter
اگر انتخابها از جستجوی پایگاه داده در دسترس هستند.
به عنوان مثال، اگر انتخاب های موجود برای اسپینر شما از قبل تعیین شده است، می توانید یک آرایه رشته ای تعریف شده در یک فایل منبع رشته ای به آنها ارائه دهید:
<?xml version="1.0" encoding="utf-8"?> <resources> <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>
با آرایه ای مانند این، می توانید از کد زیر در Activity
یا Fragment
خود استفاده کنید تا با استفاده از نمونه ای از ArrayAdapter
آرایه را به اسپینر ارائه دهید:
کاتلین
val spinner: Spinner = findViewById(R.id.planets_spinner) // Create an ArrayAdapter using the string array and a default spinner layout. ArrayAdapter.createFromResource( this, R.array.planets_array, android.R.layout.simple_spinner_item ).also { adapter -> // Specify the layout to use when the list of choices appears. adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) // Apply the adapter to the spinner. spinner.adapter = adapter }
جاوا
Spinner spinner = (Spinner) findViewById(R.id.planets_spinner); // Create an ArrayAdapter using the string array and a default spinner layout. ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.planets_array, android.R.layout.simple_spinner_item ); // Specify the layout to use when the list of choices appears. adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // Apply the adapter to the spinner. spinner.setAdapter(adapter);
متد createFromResource()
به شما امکان می دهد یک ArrayAdapter
از آرایه رشته ایجاد کنید. آرگومان سوم برای این روش یک منبع چیدمان است که نحوه نمایش انتخاب انتخاب شده در کنترل اسپینر را مشخص می کند. پلت فرم طرح بندی simple_spinner_item
را ارائه می دهد. این طرح پیشفرض است، مگر اینکه بخواهید طرحبندی خود را برای ظاهر اسپینر تعریف کنید.
با setDropDownViewResource(int)
تماس بگیرید تا طرح بندی را که آداپتور برای نمایش لیست انتخاب های اسپینر استفاده می کند، مشخص کنید. simple_spinner_dropdown_item
یک طرح استاندارد دیگر است که توسط پلتفرم تعریف شده است.
برای اعمال آداپتور به Spinner
خود setAdapter()
فراخوانی کنید.
به انتخاب های کاربر پاسخ دهید
هنگامی که کاربر یک مورد را از منوی اسپینر انتخاب می کند، شی Spinner
یک رویداد انتخاب شده در مورد را دریافت می کند.
برای تعریف کنترل کننده رویداد انتخاب برای یک اسپینر، رابط AdapterView.OnItemSelectedListener
و متد مربوطه onItemSelected()
را برای برگشت به تماس پیاده سازی کنید. به عنوان مثال، در اینجا پیاده سازی رابط در یک Activity
آمده است:
کاتلین
class SpinnerActivity : Activity(), AdapterView.OnItemSelectedListener { ... override fun onItemSelected(parent: AdapterView<*>, view: View?, pos: Int, id: Long) { // An item is selected. You can retrieve the selected item using // parent.getItemAtPosition(pos). } override fun onNothingSelected(parent: AdapterView<*>) { // Another interface callback. } }
جاوا
public class SpinnerActivity extends Activity implements OnItemSelectedListener { ... public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { // An item is selected. You can retrieve the selected item using // parent.getItemAtPosition(pos). } public void onNothingSelected(AdapterView<?> parent) { // Another interface callback. } }
رابط AdapterView.OnItemSelectedListener
به متدهای onItemSelected()
و onNothingSelected()
نیاز دارد.
پیاده سازی رابط را با فراخوانی setOnItemSelectedListener()
مشخص کنید:
کاتلین
val spinner: Spinner = findViewById(R.id.planets_spinner) spinner.onItemSelectedListener = this
جاوا
Spinner spinner = (Spinner) findViewById(R.id.planets_spinner); spinner.setOnItemSelectedListener(this);
اگر رابط AdapterView.OnItemSelectedListener
را با Activity
یا Fragment
خود پیاده سازی کنید، مانند مثال قبل، می توانید this
به عنوان نمونه رابط ارسال کنید.