PracticU

Radio Group

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

Radio Group
RadioButton מאפשר למשתמש לבחור ערך אחד מתוך כמה אפשרויות, אבל זה קורה רק אם הם מוגדרים כקבוצה. השיעור מראה את RadioGroup, ופתרון חלופי לכשאי אפשר לעטוף את הכפתורים.
השלבים העיקריים
1. הבעיה: LinearLayout אנכי עם ארבעה RadioButton (‏single, ‏married, ‏divorced, ‏widowed) ו-TextView עם please select your family status. בהרצה אפשר לסמן כמה כפתורים יחד, כי כל אחד עומד בפני עצמו.
2. פתרון עם RadioGroup: עוטפים את הכפתורים ב-RadioGroup. הוא יורש מ-LinearLayout, ובבנאי שלו מוגדר setOrientation אנכי, ולכן הוא אנכי כברירת מחדל. אפשר לשנות ל-horizontal. עכשיו רק כפתור אחד נבחר בכל רגע.
3. כשאי אפשר לעטוף: בדוגמת הפיצה מהשיעור על TableLayout, כפתורי הרדיו נמצאים בשורות שונות ולא באותו מקום, ובתוך RadioGroup אפשר לשים רק RadioButton. לכן בחירת פיצה אחת לא מבטלת אחרות.
4. רישום ל-onClick: נותנים לכל כפתור אותו onClick, למשל radioButtonPizza_onClick, שיוצר פונקציה אחת משותפת.
5. ביטול הכל: כותבים פונקציה uncheckAllRadioButtons(ViewGroup parent), שרצה בלולאה על הילדים, ממירה כל RadioButton ומבטלת סימון, ואם הילד ViewGroup קוראת לעצמה (רקורסיה). שולחים אליה את findViewById(android.R.id.content).
6. סימון הכפתור שנלחץ: אחרי הביטול, בהרצה הכל מתבטל גם הכפתור שנבחר. הפרמטר View של הפונקציה הוא הרכיב שנלחץ. ממירים אותו ל-RadioButton וקוראים ל-setChecked(true).
שימו לב
אם מנסים להכניס ל-RadioGroup רכיבים שאינם RadioButton או קבוצות שאין להן הורה משותף, המערכת לא מבינה מה רוצים. במקרה כזה משתמשים בפתרון של onClick ורקורסיה.
אחרי השיעור אפשר להשיג התנהגות של בחירה יחידה גם כשהכפתורים אינם באותה קבוצה.

פרקי ההרצאה: Radio Group

  1. 00:00

    היכרות מחדש עם Radio Button

  2. 00:47

    בניית Radio Button למצב משפחתי

  3. 02:00

    הרצה - רדיו בוטנים ללא קבוצה

  4. 02:41

    עטיפת הרכיבים ב-Radio Group

  5. 04:24

    בחירה יחידה עם Radio Group

  6. 05:02

    קיבוץ רדיו בוטנים במבנה טבלה

  7. 07:19

    קיבוץ באמצעות אירוע On Click

תמלול ההרצאה: Radio Group

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

  1. 00:04

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

  2. 00:20

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

  3. 00:47

    ראפ קונטנט ובואו נניח שאנחנו רוצים שהמשתמש יכניס לנו מצב משפחתי אז יש לנו פה טקסט סינגל יש לנו פה טקסט כך ארבעה כאלה של מריד יש לנו פה טקסט דיבורסט ויש לנו פה את המצב המשפחתי האחרון ווידאוט בואו נגדיר פה למשתמש טקסט view שמגדיר please select your family status text size 20 בואו נשכפל את הtext size גם להם שנראה יותר טוב ונגדיר gravity

  4. 02:04

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

  5. 02:28

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

  6. 02:48

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

  7. 03:00

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

  8. 03:17

    שימו לב הדיפולט זה ורטיקל בואו נלחץ כאן על קונטרול נרחף מעל ונראה בטול טיפה קטנצ'יק שיש לנו public class radio group extends linear layout אם אנחנו נלחץ עליו אנחנו נראה שאנחנו אוטומטית מגיעים למחלקה radio group ואם אנחנו מסתכלים על הקונסטרקטור שלו אנחנו יכולים לראות set orientation vertical זאת אומרת שכבר בקונסטרקטור יש פה שינוי

  9. 03:51

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

  10. 04:16

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

  11. 04:52

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

  12. 05:14

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

  13. 05:23

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

  14. 05:44

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

  15. 06:02

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

  16. 06:30

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

  17. 06:44

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

  18. 07:15

    בואו נחזיר את זה חזרה. נעשה פה קונטרול Z, בצורה כזאת. אז מה שאנחנו רוצים לעשות זה פעולה אחרת בכדי להצליח לגרום להתנהגות הזאת שבחירה של רדיו בטן מבטלת את כל היתר, זה די פשוט מה שאנחנו צריכים לעשות זה לגשת לכל אחד מה-radio buttons ולהירשם לאירוע on-click

  19. 07:46

    שלו בואו נקרא לפונקציה radio button pizza פעילו underline on-click ואנחנו רוצים שהאירוע הזה בואו רק נרשום או נלחץ על enter ונגיע לפונקציה עצמה שלו אנחנו רוצים שכל radio בטון יפעיל לנו בדיוק את אותה הפונקציה בואו ניגש לרדיו בטון הזה

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

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

ההרצאה הבאה: תיקיות ומשאבים - Resources

הרצאות קשורות מקורסים אחרים

  • פקודת Select עם Group By
  • יצירת Group Resources
  • Qlik Aggregation Functions - Group By - חלק 1
  • הגדרת SCCM Boundary Group

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

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