
match_parent, גובה wrap_content, עם id (spinnerAnimals1) ו-margin. מתחתיו ImageView של 200dp על 200dp להצגת התמונה.string-array בשם animals עם פריטי item לכל חיה, ובתכונה entries של ה-Spinner מפנים אליו.setOnItemSelectedListener עם onItemSelected ו-onNothingSelected. בתחילת onItemSelected בודקים שה-view לא null. זה קורה, למשל, בשינוי אוריינטציה.view.getClass().getSimpleName() הראה ש-view הוא AppCompatTextView. ממירים אליו, לוקחים getText().toString().toLowerCase(), ומשם מקבלים את מזהה התמונה עם getIdentifier בתיקיית drawable, ו-setImageResource. זה עובד כי שמות הקבצים זהים לשמות הפריטים.spinnerAnimals2. מחלקת Repository מחזירה ArrayList<String> של חיות, ו-ArrayAdapter<String> נבנה עם Context, android.R.layout.simple_spinner_dropdown_item והרשימה, ואז setAdapter. כאן שם החיה נלקח ישירות מהרשימה לפי position.item_spinner: LinearLayout אופקי, ImageView של 50dp ו-TextView של 20sp בכחול.AnimalsAdapter extends BaseAdapter, עם רשימת חיות, LayoutInflater.from(context), Resources ושם חבילה. getCount מחזירה את גודל הרשימה, ו-getView מנפחת את item_spinner, מציבה טקסט ותמונה ומחזירה את ה-layout. אחר כך מחברים אותו עם setAdapter.imageViewAnimal, יכול לחזור בכמה layouts, כי findViewById פועל על layout מסוים.הטקסט המלא של הדקות הראשונות בהרצאה «Spinner» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
רכיב די נפוץ ומאוד שימושי שמאפשר להציג רשימת פריטים נקרא ספינר. ספינר מוכר לפעמים בשם של drop-down list או רכיב סלקט, והוא פשוט מאוד מאפשר להציג רשימה נגללת של פריטים ולבחור פריט אחד.
היתרון שלו זה שהוא כל הזמן סגור ורק אם אנחנו לוחצים עליו הוא נפתח ומציג את כל הפריטים. אז בואו נראה איך אפשר לעבוד עם הספינר. אנחנו פשוט צריכים להגדיר לנו פה איזשהו רכיב.
בואו נגדיר שהרוחב שלו הוא match parent והגובה שלו הוא wrap-content. נגדיר אותו בצורה כזאת. בואו ניתן לו איזשהו ID, spinner, ונציג חיות.
נגדיר spinner-animals 1, ניתן לו איזשהו מרג'ין ואנחנו רוצים פשוט להציג רשימה של פריטים. אז יש כל מיני אפשרויות להביא את הפריטים לספינר ולהציג אותם בספינר.
בואו נתחיל עם הצגת הפריטים במערך שנמצא בקובץ הסטרינגס. אנחנו יכולים להיכנס לקובץ הסטרינגס, איפה שאנחנו תמיד מגדירים את המחרוזות שלנו, ולהגדיר כאן תגית שנקראת String Array.
String Array מאפשרת לנו להגדיר רשימה של פריטים, רשימה של מחרוזות. בואו ניתן לה name Animals ונגדיר את הפריטים השונים.
כל אחד תגית אייטם. אז בואו נבנה פה את Bunny, יש לנו את דאקלינג יש לנו את אלפנט יש לנו את אורול ויש לנו את פאפי כעת אנחנו רוצים להציג את הפריטים האלה בספינר אז כל מה שאנחנו צריכים לעשות זה לגשת למאפיין שנקרא entries ולהגיד שקיים איזשהו מערך הרי שנקרא animals בואו נריץ הנה התוכנית עולה ואנחנו רואים את הפריטים השונים.
כעת אנחנו רוצים בבחירה של פריט להציג את התמונה שלו. אז אנחנו יכולים להוסיף כאן רכיב image view, בואו נגדיר אותו כ-200 dp על 200 dp, בואו ניתן לו id image view animal, בואו ניתן לו gravity center horizontal שהוא יתייצב באמצע, איזשהו מרג'ין גם כן 10 dps. כעת אנחנו רוצים
לתפוס את האירוע בחירה של הספינר ובאירוע הזה להציג את התמונה הדרושה כאשר יש לנו פה בדיוק את התמונות שראינו ברשימה. לצורך כך בואו ניגש לקוד שלנו ודבר ראשון נאתר את רכיב הספינר אז הנה יש לנו פה את הספינר ויש לנו ספינר אנימארס אחד תתיר אותו ספינר ויש לנו find view by id והנה הספינר שלנו בנוסף אנחנו רוצים לאתר
את ה-image view שלנו שנקראת image view animal הנה יש לנו פה את ה-image view find view by id, תרנו את ה-image view וכעת מה שאנחנו רוצים לעשות זה להגיע ל-spinners animal שאני רואה שיש לי פה שגיאה בשם, עשינו spinner animals 1 בצורה כזאת.
הסיבה שהרכיב הזה נקרא spinner כי במכשיר מובייל לפעמים רואים את הפריטים כאילו שהם מסתובבים ונכנסים לתוך המכשיר.
זו הסיבה שהוא נקרא ספינר, כאילו מסתובב כזה. ולפעמים לא, לפעמים ממש רואים אותם ברשימת גלילה כמו שראינו במכשיר שלנו. וכל מה שאנחנו רוצים לעשות זה to set on item selected listener.
בואו ניגש ונבנה new on item selected listener. יש לנו שני אירועים שמתרחשים שיכולים להתרחש אירוע אחד זה on item selected כשיש פריט והוא נבחר ואירוע אחר שבעצם ביצעו איזה פעולה עם הספינר אבל לא בחרו שום פריט לדוגמה רשימה ריקה או משהו כזה הדבר הראשון שכדאי לבדוק תמיד זה האם ה-vue שמתקבל הוא לא מכיל שום
דבר במידה וזה קורה אנחנו לא רוצים להמשיך מתי מתרחש מצב כזה כאשר משנים את האוריינטציה לדוגמה של המכשיר אז הרכיב של הספינר יכול לבצע את האירוע Selected אבל שום דבר לא נמצא בתוך ה-View.
האירוע On Item Selected מקבל מספר פריטים שמתארים את הפריט שנבחר לדוגמה את המיקום שלו לדוגמה איזה View נבחר איזה תצוגה נבחרה שמה מה-Parent שלו ואנחנו אנחנו יכולים עכשיו להשתמש בפריטים האלה בכדי לגלות את התמונה בעצם שאנחנו רוצים להציג ולהציג אותה.
אז כל מה שאנחנו רוצים לעשות זה קודם כל לגלות את ה-Image name איזה שם של תמונה אנחנו רוצים. והשם של התמונה זה בעצם השם של הפריט שנבחר.
אתם יכולים לראות שהשמות של התמונות זה בדיוק השמות של הפריטים זה בעצם טריק מאוד נוח לביצוע. עכשיו, איך אנחנו יכולים להכניס את השם של התמונה? איך אני מגלה את השם של הפריט?
אז בואו נעשה קודם כל איזשהו ניסוי קטן. בואו נבצע טוסט, האמת זה לא יכול להיות דיס, זה צריך להיות מיין אקטיביטי דיס, כי אנחנו לא נמצאים במחלקה מיין אקטיביטי, אנחנו נמצאים במחלקה אנונימית.
אז יש לנו כאן את ה-vue שלנו ואנחנו רוצים להציג get class נקודה get simple name זאת אומרת מה שאני רוצה לראות כרגע זה מה זה בדיוק ה-vue שאנחנו רואים הרי ברכיב של הספינר מוצגות מכרוזות אז מה זה בדיוק ה-vue הזה שאני רואה כאן וכל מה שאני רוצה לעשות זה אני מציג את הסוג נתונים של ה-vue בואו רגע נריץ את זה הנה התוכנית רצה ושימו
לב שכבר על ההתחלה רואים app compact text view בואו נבחר פריט נוסף ונראה אפ קומפט טקסט ויו זאת אומרת שיש לנו כאן אפליקיישן קומפטביליטי טקסט ויו זה בעצם איזשהו רכיב טקסט ויו פנימי כזה שנמצא שמה ורק מציג לנו את המחרוזות אבל היה חשוב לנו להבין מה הסוג נתונים הזה
של הרכיב למה כי עכשיו אנחנו יכולים להגיע לויו ולבצע דרכו קאסטינג לאפ. קומפט טקסט ויו, הנה הוויו שלנו ואחרי שביצענו את הקאסטינג הזה אנחנו דרכו יכולים להגיע לגט טקסט מפני שלוויו עצמו אין גט טקסט אבל אם אני עושה קאסטינג לטקסט ויו הפנימי הזה אז אני יכול להגיע לגט טקסט.
לאחר מכן אנחנו רוצים להוציא אותו כסטרינג ולהפוך אותו ללורר קייס. עכשיו יש לנו את השם שנבחר ברשימת גלילה כלורל קייס וזה בדיוק השם של התמונה. אנחנו עכשיו יכולים להשיג את האימג' איידי לפי השם הזה.
זה יהיה על ידי get resources נקודה get identifier אנחנו פונים ונותנים לו את האימג' name תיקיית drawable ואנחנו צריכים רק לציין את הפאקג' של האפליקציה וכעת יש לנו את הקוד של התמונה.
אז אנחנו יכולים לפנות ל-Image View and Email ו-To Set Image Resource, הנה ה-Image ID בוא תציג לנו ואנחנו יכולים להיפטר מה-Text View הזה. בואו נריץ, הנה האפליקציה עולה ואנחנו כבר רואים את התמונה הראשונה, בואו נבחר תמונה שנייה, תמונה נוספת ואנחנו רואים שתוך כדי הבחירה
הצלחנו לקבל את האירוע, לזהות אותו, להירשם אליו ולבצע פעולה בהתאם לפריט שנבחר. אז קודם כל מה שראינו בדוגמה הזאת זה איך אנחנו יכולים להציג את הספינר הכי פשוט שלוקח את המידע מתוך רשימת מכרוזות שפשוט נמצאות בקובץ ה-strings.xml.
עכשיו מה קורה אם אנחנו מקבלים מכרוזות דרך הקוד, דרך האינטרנט, דרך קובץ לאו דווקא מכרוזות Hard Coded שנמצאות בקובץ Strings XML. אז כאן אנחנו יכולים לגשת לשיטה אחרת ולשלוף את המידע או לאכלס את המידע שבספינר ממכרוזות שנמצאות אצלנו בקוד.
לצורך כך בואו נשכפל את הספינר הזה והפעם נקרא ל-ID שלו spinner Animals 2 ואנחנו רואים שזאת הסיבה שהגדרתי פה אחד בכדי להראות דוגמאות נוספות.
כאן אנחנו לא רוצים שהמידע יהיה מה-entries, אלא אנחנו רוצים שהמידע הזה יתווסף לספינר באופן דינמי דרך הקוד. אז בואו נחזור לקוד, נשכפל את השורה הראשונה הזאת, נגדיר שאנחנו עכשיו נמצאים בספינר Animals 2, אנחנו רוצים לשכפל גם את השורה הזאת ולאתר את הרכיב ספינר השני וכעת אנחנו רוצים להביא בצורה דינמית מכרוזות
בקוד הג'אב. אז בואו נייצר לנו איזושהי מחלקה חיצונית שתהווה ריפוזיטורי, כלומר מחסן עבור כל המכרוזות.
הנה יש לנו פה מחלקה ריפוזיטורי ומה שאנחנו רוצים להגדיר בה זה פונקציה סטטית שמחזירה הרייליסט של סטרינג והפונקציה הזאת נקראת get animals ואנחנו רוצים להגדיר איזשהו הרייליסט של סטרינג בתוך הפונקציה הנה הרייליסט אנחנו רוצים למלא אותו בערכים יש לנו כאן בדיוק את אותן מחוזות הנה הוואני משכפל את זה ויש לנו פה את הדאטלינג ויש
לנו את האלפנט ויש לנו את ויש לנו את הפאפי לבסוף אנחנו רוצים to return animals ויש לנו את הריפוזיטורי עכשיו אנחנו צריכים שיהיה לנו כאן איזה שהוא הרייליסט בואו נגדיר private הרייליסט מסוג stream animals שווה repository.getanimals והנה יש לנו מכרוזות שהם הוגדרו בקוד ולא hardcoded בתוך קובץ xml עכשיו אתם יכולים
להגיד גם המכרוזות האלה הם hardcoded. נכון, אבל זה בעצם הדמיה למצב שבו יש לי מכרוזות בקוד הג'אווה, והמכרוזות האלה גם יכלו להגיע דרך איזשהו קונקשן לאינטרנט, דרך איזשהו קובץ שנמצא בתוך המכשיר, דרך איזשהו מסד נתונים שאני יכול לקרוא את
המידע, ואז קיבלתי אותם בתוך ה-raylist ומפה אני רוצה להציב אותם בספינר. אז מה שאנחנו צריכים להגדיר זה הרי אדפטר מסוג סטרינג בואו נפתח כאן משתנה הרי אדפטר