ספינר הם דרך מהירה לבחור ערך אחד מתוך קבוצה. כברירת המחדל המצב הנוכחי, סימן גרפי שמסמן את הערך הנוכחי שנבחר. הקשה על הסיבוב מציגה תפריט שמציג את כל הערכים האחרים שהמשתמש יכול לבחור.
אפשר להוסיף מסתובבת לפריסה באמצעות
Spinner
בדרך כלל בפריסת XML באמצעות
רכיב <Spinner>
. הערך הזה מוצג בקטעים הבאים
דוגמה:
<Spinner android:id="@+id/planets_spinner" android:layout_width="match_parent" android:layout_height="wrap_content" />
כדי לאכלס את המחוון ברשימה של אפשרויות, צריך לציין
SpinnerAdapter
ב-
Activity
או
Fragment
קוד המקור.
אם אתם משתמשים ברכיבים של Material Design,
חשוף
תפריטים נפתחים מקבילים ל-Spinner
.
אכלוס הסרגל באפשרויות של המשתמש
האפשרויות שתספקו לסיבוב יכולה להגיע מכל מקור, אבל אתם
חייב לספק אותם דרך SpinnerAdapter
, כמו
ArrayAdapter
אם האפשרויות זמינות במערך או
CursorAdapter
אם האפשרויות זמינות מתוך שאילתה של מסד נתונים.
לדוגמה, אם האפשרויות הזמינות לספינר נקבעות מראש, אפשר לספק להם מערך מחרוזת שמוגדר משאב מחרוזות file:
<?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
:
Kotlin
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 }
Java
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
היא פריסה סטנדרטית נוספת שהפלטפורמה מגדירה.
שיחת טלפון
setAdapter()
כדי לחבר את המתאם למכשיר Spinner
.
מענה לבחירות של המשתמשים
כאשר המשתמש בוחר פריט מתפריט הציר,
אובייקט אחד (Spinner
)
מקבל אירוע שנבחר בפריט.
כדי להגדיר את ה-handler של אירועי הבחירה עבור סימן גרפי שפעולה מתבצעת, צריך להטמיע את
AdapterView.OnItemSelectedListener
של האפליקציות,
onItemSelected()
שיטת קריאה חוזרת. לדוגמה, הנה הטמעה של הממשק
Activity
:
Kotlin
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. } }
Java
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()
:
Kotlin
val spinner: Spinner = findViewById(R.id.planets_spinner) spinner.onItemSelectedListener = this
Java
Spinner spinner = (Spinner) findViewById(R.id.planets_spinner); spinner.setOnItemSelectedListener(this);
אם מטמיעים את AdapterView.OnItemSelectedListener
עם Activity
או Fragment
, כמו
מהדוגמה הקודמת, אפשר להעביר את this
כמופע של הממשק.