PracticU

Spinner

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA › Spinner
מילון מושגים:
תמונה - קובץ גרפי המוצג על המסך. בהקשר של וירטואליזציה או Docker, תבנית מוכנה שממנה יוצרים מכונה או קונטיינר.
לייאאוט - ארגון וסידור הרכיבים החזותיים על המסך או בדף, כמו מיקום כפתורים, טקסט ותמונות.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
View - רכיב שאחראי על הצגת המידע למשתמש (התצוגה) בדפוס MVC. גם טבלה וירטואלית מבוססת שאילתה במסד נתונים.
ArrayList - מבנה נתונים של רשימה דינמית שגודלה משתנה, הנפוץ בשפות כמו Java ו-C#.
Android - מערכת הפעלה מבוססת Linux לטלפונים ולמכשירים ניידים, שפותחה על ידי גוגל.
חבילה - אוסף ארוז של קוד, ספריות או קבצים המופץ כיחידה אחת ומותקן בעזרת מנהל חבילות.
XML - שפת סימון לייצוג נתונים מובְנים בעזרת תגיות, המשמשת להחלפת מידע בין מערכות ולקובצי הגדרות.

Spinner
Spinner הוא רשימה נפתחת (Dropdown List) שנשארת סגורה עד שלוחצים עליה, ובוחרים ממנה פריט אחד. בשיעור מראים שלוש דרכים למלא אותו, ואיך לתפוס את הבחירה ולהציג תמונה של החיה שנבחרה.
השלבים העיקריים
1. ה-Spinner ב-layout: רוחב match_parent, גובה wrap_content, עם id (spinnerAnimals1) ו-margin. מתחתיו ImageView של 200dp על 200dp להצגת התמונה.
2. מילוי ממערך מחרוזות: בקובץ strings מגדירים string-array בשם animals עם פריטי item לכל חיה, ובתכונה entries של ה-Spinner מפנים אליו.
3. תפיסת הבחירה: setOnItemSelectedListener עם onItemSelected ו-onNothingSelected. בתחילת onItemSelected בודקים שה-view לא null. זה קורה, למשל, בשינוי אוריינטציה.
4. איתור שם החיה: view.getClass().getSimpleName() הראה ש-view הוא AppCompatTextView. ממירים אליו, לוקחים getText().toString().toLowerCase(), ומשם מקבלים את מזהה התמונה עם getIdentifier בתיקיית drawable, ו-setImageResource. זה עובד כי שמות הקבצים זהים לשמות הפריטים.
5. מילוי מהקוד: ספינר שני עם id spinnerAnimals2. מחלקת Repository מחזירה ArrayList<String> של חיות, ו-ArrayAdapter<String> נבנה עם Context, android.R.layout.simple_spinner_dropdown_item והרשימה, ואז setAdapter. כאן שם החיה נלקח ישירות מהרשימה לפי position.
6. פריט מעוצב: ספינר שלישי עם layout משלנו item_spinner: LinearLayout אופקי, ImageView של 50dp ו-TextView של 20sp בכחול.
7. Adapter משלנו: AnimalsAdapter extends BaseAdapter, עם רשימת חיות, LayoutInflater.from(context), Resources ושם חבילה. getCount מחזירה את גודל הרשימה, ו-getView מנפחת את item_spinner, מציבה טקסט ותמונה ומחזירה את ה-layout. אחר כך מחברים אותו עם setAdapter.
שימו לב
- אותו id, כמו imageViewAnimal, יכול לחזור בכמה layouts, כי findViewById פועל על layout מסוים.
- ArrayAdapter או BaseAdapter הם שניהם אפשריים כשבונים Adapter משלנו.
אחרי השיעור אפשר להציג Spinner ממערך ב-XML, מרשימה בקוד או עם עיצוב משלכם, ולהגיב לבחירה.

פרקי ההרצאה: Spinner

  1. 00:00

    מהו Spinner ומתי משתמשים בו

  2. 01:04

    פריטים מ-string-array בקובץ strings

  3. 02:26

    הוספת ImageView להצגת החיה

  4. 03:14

    איתור הרכיבים בקוד Java

  5. 05:02

    האזנה עם OnItemSelectedListener

  6. 07:01

    בירור סוג ה-View שנבחר

  7. 08:28

    קריאת הטקסט והצגת התמונה

  8. 10:37

    מילוי Spinner מקוד Java

תמלול ההרצאה: Spinner

הטקסט המלא של הדקות הראשונות בהרצאה «Spinner» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:01

    רכיב די נפוץ ומאוד שימושי שמאפשר להציג רשימת פריטים נקרא ספינר. ספינר מוכר לפעמים בשם של drop-down list או רכיב סלקט, והוא פשוט מאוד מאפשר להציג רשימה נגללת של פריטים ולבחור פריט אחד.

  2. 00:21

    היתרון שלו זה שהוא כל הזמן סגור ורק אם אנחנו לוחצים עליו הוא נפתח ומציג את כל הפריטים. אז בואו נראה איך אפשר לעבוד עם הספינר. אנחנו פשוט צריכים להגדיר לנו פה איזשהו רכיב.

  3. 00:33

    בואו נגדיר שהרוחב שלו הוא match parent והגובה שלו הוא wrap-content. נגדיר אותו בצורה כזאת. בואו ניתן לו איזשהו ID, spinner, ונציג חיות.

  4. 00:50

    נגדיר spinner-animals 1, ניתן לו איזשהו מרג'ין ואנחנו רוצים פשוט להציג רשימה של פריטים. אז יש כל מיני אפשרויות להביא את הפריטים לספינר ולהציג אותם בספינר.

  5. 01:11

    בואו נתחיל עם הצגת הפריטים במערך שנמצא בקובץ הסטרינגס. אנחנו יכולים להיכנס לקובץ הסטרינגס, איפה שאנחנו תמיד מגדירים את המחרוזות שלנו, ולהגדיר כאן תגית שנקראת String Array.

  6. 01:28

    String Array מאפשרת לנו להגדיר רשימה של פריטים, רשימה של מחרוזות. בואו ניתן לה name Animals ונגדיר את הפריטים השונים.

  7. 01:39

    כל אחד תגית אייטם. אז בואו נבנה פה את Bunny, יש לנו את דאקלינג יש לנו את אלפנט יש לנו את אורול ויש לנו את פאפי כעת אנחנו רוצים להציג את הפריטים האלה בספינר אז כל מה שאנחנו צריכים לעשות זה לגשת למאפיין שנקרא entries ולהגיד שקיים איזשהו מערך הרי שנקרא animals בואו נריץ הנה התוכנית עולה ואנחנו רואים את הפריטים השונים.

  8. 02:31

    כעת אנחנו רוצים בבחירה של פריט להציג את התמונה שלו. אז אנחנו יכולים להוסיף כאן רכיב image view, בואו נגדיר אותו כ-200 dp על 200 dp, בואו ניתן לו id image view animal, בואו ניתן לו gravity center horizontal שהוא יתייצב באמצע, איזשהו מרג'ין גם כן 10 dps. כעת אנחנו רוצים

  9. 03:11

    לתפוס את האירוע בחירה של הספינר ובאירוע הזה להציג את התמונה הדרושה כאשר יש לנו פה בדיוק את התמונות שראינו ברשימה. לצורך כך בואו ניגש לקוד שלנו ודבר ראשון נאתר את רכיב הספינר אז הנה יש לנו פה את הספינר ויש לנו ספינר אנימארס אחד תתיר אותו ספינר ויש לנו find view by id והנה הספינר שלנו בנוסף אנחנו רוצים לאתר

  10. 03:58

    את ה-image view שלנו שנקראת image view animal הנה יש לנו פה את ה-image view find view by id, תרנו את ה-image view וכעת מה שאנחנו רוצים לעשות זה להגיע ל-spinners animal שאני רואה שיש לי פה שגיאה בשם, עשינו spinner animals 1 בצורה כזאת.

  11. 04:41

    הסיבה שהרכיב הזה נקרא spinner כי במכשיר מובייל לפעמים רואים את הפריטים כאילו שהם מסתובבים ונכנסים לתוך המכשיר.

  12. 04:53

    זו הסיבה שהוא נקרא ספינר, כאילו מסתובב כזה. ולפעמים לא, לפעמים ממש רואים אותם ברשימת גלילה כמו שראינו במכשיר שלנו. וכל מה שאנחנו רוצים לעשות זה to set on item selected listener.

  13. 05:15

    בואו ניגש ונבנה new on item selected listener. יש לנו שני אירועים שמתרחשים שיכולים להתרחש אירוע אחד זה on item selected כשיש פריט והוא נבחר ואירוע אחר שבעצם ביצעו איזה פעולה עם הספינר אבל לא בחרו שום פריט לדוגמה רשימה ריקה או משהו כזה הדבר הראשון שכדאי לבדוק תמיד זה האם ה-vue שמתקבל הוא לא מכיל שום

  14. 05:21

    דבר במידה וזה קורה אנחנו לא רוצים להמשיך מתי מתרחש מצב כזה כאשר משנים את האוריינטציה לדוגמה של המכשיר אז הרכיב של הספינר יכול לבצע את האירוע Selected אבל שום דבר לא נמצא בתוך ה-View.

  15. 06:05

    האירוע On Item Selected מקבל מספר פריטים שמתארים את הפריט שנבחר לדוגמה את המיקום שלו לדוגמה איזה View נבחר איזה תצוגה נבחרה שמה מה-Parent שלו ואנחנו אנחנו יכולים עכשיו להשתמש בפריטים האלה בכדי לגלות את התמונה בעצם שאנחנו רוצים להציג ולהציג אותה.

  16. 06:31

    אז כל מה שאנחנו רוצים לעשות זה קודם כל לגלות את ה-Image name איזה שם של תמונה אנחנו רוצים. והשם של התמונה זה בעצם השם של הפריט שנבחר.

  17. 06:42

    אתם יכולים לראות שהשמות של התמונות זה בדיוק השמות של הפריטים זה בעצם טריק מאוד נוח לביצוע. עכשיו, איך אנחנו יכולים להכניס את השם של התמונה? איך אני מגלה את השם של הפריט?

  18. 06:59

    אז בואו נעשה קודם כל איזשהו ניסוי קטן. בואו נבצע טוסט, האמת זה לא יכול להיות דיס, זה צריך להיות מיין אקטיביטי דיס, כי אנחנו לא נמצאים במחלקה מיין אקטיביטי, אנחנו נמצאים במחלקה אנונימית.

  19. 07:15

    אז יש לנו כאן את ה-vue שלנו ואנחנו רוצים להציג get class נקודה get simple name זאת אומרת מה שאני רוצה לראות כרגע זה מה זה בדיוק ה-vue שאנחנו רואים הרי ברכיב של הספינר מוצגות מכרוזות אז מה זה בדיוק ה-vue הזה שאני רואה כאן וכל מה שאני רוצה לעשות זה אני מציג את הסוג נתונים של ה-vue בואו רגע נריץ את זה הנה התוכנית רצה ושימו

  20. 07:53

    לב שכבר על ההתחלה רואים app compact text view בואו נבחר פריט נוסף ונראה אפ קומפט טקסט ויו זאת אומרת שיש לנו כאן אפליקיישן קומפטביליטי טקסט ויו זה בעצם איזשהו רכיב טקסט ויו פנימי כזה שנמצא שמה ורק מציג לנו את המחרוזות אבל היה חשוב לנו להבין מה הסוג נתונים הזה

  21. 07:59

    של הרכיב למה כי עכשיו אנחנו יכולים להגיע לויו ולבצע דרכו קאסטינג לאפ. קומפט טקסט ויו, הנה הוויו שלנו ואחרי שביצענו את הקאסטינג הזה אנחנו דרכו יכולים להגיע לגט טקסט מפני שלוויו עצמו אין גט טקסט אבל אם אני עושה קאסטינג לטקסט ויו הפנימי הזה אז אני יכול להגיע לגט טקסט.

  22. 08:54

    לאחר מכן אנחנו רוצים להוציא אותו כסטרינג ולהפוך אותו ללורר קייס. עכשיו יש לנו את השם שנבחר ברשימת גלילה כלורל קייס וזה בדיוק השם של התמונה. אנחנו עכשיו יכולים להשיג את האימג' איידי לפי השם הזה.

  23. 09:16

    זה יהיה על ידי get resources נקודה get identifier אנחנו פונים ונותנים לו את האימג' name תיקיית drawable ואנחנו צריכים רק לציין את הפאקג' של האפליקציה וכעת יש לנו את הקוד של התמונה.

  24. 09:38

    אז אנחנו יכולים לפנות ל-Image View and Email ו-To Set Image Resource, הנה ה-Image ID בוא תציג לנו ואנחנו יכולים להיפטר מה-Text View הזה. בואו נריץ, הנה האפליקציה עולה ואנחנו כבר רואים את התמונה הראשונה, בואו נבחר תמונה שנייה, תמונה נוספת ואנחנו רואים שתוך כדי הבחירה

  25. 10:09

    הצלחנו לקבל את האירוע, לזהות אותו, להירשם אליו ולבצע פעולה בהתאם לפריט שנבחר. אז קודם כל מה שראינו בדוגמה הזאת זה איך אנחנו יכולים להציג את הספינר הכי פשוט שלוקח את המידע מתוך רשימת מכרוזות שפשוט נמצאות בקובץ ה-strings.xml.

  26. 10:38

    עכשיו מה קורה אם אנחנו מקבלים מכרוזות דרך הקוד, דרך האינטרנט, דרך קובץ לאו דווקא מכרוזות Hard Coded שנמצאות בקובץ Strings XML. אז כאן אנחנו יכולים לגשת לשיטה אחרת ולשלוף את המידע או לאכלס את המידע שבספינר ממכרוזות שנמצאות אצלנו בקוד.

  27. 11:06

    לצורך כך בואו נשכפל את הספינר הזה והפעם נקרא ל-ID שלו spinner Animals 2 ואנחנו רואים שזאת הסיבה שהגדרתי פה אחד בכדי להראות דוגמאות נוספות.

  28. 11:20

    כאן אנחנו לא רוצים שהמידע יהיה מה-entries, אלא אנחנו רוצים שהמידע הזה יתווסף לספינר באופן דינמי דרך הקוד. אז בואו נחזור לקוד, נשכפל את השורה הראשונה הזאת, נגדיר שאנחנו עכשיו נמצאים בספינר Animals 2, אנחנו רוצים לשכפל גם את השורה הזאת ולאתר את הרכיב ספינר השני וכעת אנחנו רוצים להביא בצורה דינמית מכרוזות

  29. 12:00

    בקוד הג'אב. אז בואו נייצר לנו איזושהי מחלקה חיצונית שתהווה ריפוזיטורי, כלומר מחסן עבור כל המכרוזות.

  30. 12:12

    הנה יש לנו פה מחלקה ריפוזיטורי ומה שאנחנו רוצים להגדיר בה זה פונקציה סטטית שמחזירה הרייליסט של סטרינג והפונקציה הזאת נקראת get animals ואנחנו רוצים להגדיר איזשהו הרייליסט של סטרינג בתוך הפונקציה הנה הרייליסט אנחנו רוצים למלא אותו בערכים יש לנו כאן בדיוק את אותן מחוזות הנה הוואני משכפל את זה ויש לנו פה את הדאטלינג ויש

  31. 13:00

    לנו את האלפנט ויש לנו את ויש לנו את הפאפי לבסוף אנחנו רוצים to return animals ויש לנו את הריפוזיטורי עכשיו אנחנו צריכים שיהיה לנו כאן איזה שהוא הרייליסט בואו נגדיר private הרייליסט מסוג stream animals שווה repository.getanimals והנה יש לנו מכרוזות שהם הוגדרו בקוד ולא hardcoded בתוך קובץ xml עכשיו אתם יכולים

  32. 13:43

    להגיד גם המכרוזות האלה הם hardcoded. נכון, אבל זה בעצם הדמיה למצב שבו יש לי מכרוזות בקוד הג'אווה, והמכרוזות האלה גם יכלו להגיע דרך איזשהו קונקשן לאינטרנט, דרך איזשהו קובץ שנמצא בתוך המכשיר, דרך איזשהו מסד נתונים שאני יכול לקרוא את

  33. 14:06

    המידע, ואז קיבלתי אותם בתוך ה-raylist ומפה אני רוצה להציב אותם בספינר. אז מה שאנחנו צריכים להגדיר זה הרי אדפטר מסוג סטרינג בואו נפתח כאן משתנה הרי אדפטר

לקורס המלא: קורס פיתוח אפליקציות לאנדרואיד

ההרצאה הקודמת: Grid View

ההרצאה הבאה: Tasks and Back Stack

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פיתוח אפליקציות - לאייפון iPhone iOS - ב-Swift-Xcode
  • קורס פלאטר - Flutter - שפת DART של גוגל למובייל - פיתוח אפליקציות לאנדרואיד ואייפון
  • קורס PhoneGap - פיתוח אפליקציות לאנדרואיד ואייפון