
colorNames עם השמות שיוצגו (אדום, ירוק, כחול, ועוד), ומערך int בשם colorValues עם ערכי Color המתאימים באותו סדר. הצבעים הם red, green, blue, yellow, cyan ו-magenta.AlertDialog.Builder(this) ושרשור: setIcon, setTitle, setCancelable(false), setNegativeButton עם טקסט Cancel ו-null כמאזין, כך שהלחיצה רק סוגרת את התיבה.setItems(colorNames, listener). אחרי create() קוראים ל-show().DialogInterface.OnClickListener. ב-onClick(dialog, which) ה-which הוא אינדקס הפריט שנבחר, ולכן קוראים ל-setBackgroundColor(colorValues[which]). בגרסה הזו המערך צריך להיות משתנה גלובלי.new OnClickListener() שנוצרת במקום, עם אותו קוד. כך אפשר להשתמש במשתנה מקומי כמו colorValues, והקוד קצר ולא מצריך מימוש ממשק בחוץ.final, ו-Android Studio מוסיפה זאת אוטומטית. כדאי גם לשנות את השם which ל-index.null כמאזין של כפתור Cancel פשוט סוגרת את הדיאלוג.setCancelable(false), לחיצה מחוץ לתיבה לא עושה כלום.הטקסט המלא של הדקות הראשונות בהרצאה «List Dialog» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
תיבת האלרט דיאלוג שראינו בסרטון הקודם יכולה גם להציג לנו רשימת פריטים כך שהיוזר יכול לבחור פריט ואנחנו יכולים לכתוב קוד שיתבצע כתגובה לפריט שנבחר. כל הדבר הזה מוצג כמובן גם כן בדיאלוג כך שהיוזר יהיה חייב להתייחס אליה, לבחור את אחד מהפריטים ורק אז הדיאלוג בעצם נעלמת.
אז בואו נראה איך אפשר לעשות את זה עם דוגמה פשוטה של בחירת צבע מרשימת צבעים. הנה יש לנו כאן לחצן סלקט קולור הוא מפעיל איזשהו קטע קוד בואו ניגש לקוד בג'אווה ואנחנו רוצים בלחצן פשוט להציג לו את הלר דיאלוג אבל הפעם עם רשימה של צבעים לבחירה.
הדבר הראשון שאנחנו צריכים לעשות זה לבנות את רשימת הפרטים שלנו. זה יהיה מערך של סטרינגס בואו נקרא לזה אייטמס ונגדיר מערך צבעים רגיל מה שאנחנו מגדירים במערך הזה זה מה שיוצג באלרט דיאלוג אז בואו ניקח כמה צבעים ניקח את רד גרין ובלו
והRGB ואת שלושת הצבעים המשלימים שלהם שזה ילו, סייאן ומג'נטה והנה יש לנו רשימה של צבעים להצגה עכשיו אנחנו רוצים רשימה של צבעים אמיתיים שכל אחד יתאר צבע כזה רק בכדי שנוכל גם לצבוע את הצבע וצבע ספציפי שנבחר כי אין לנו מה לעשות עם המכרוזת Red.
אנחנו רוצים ממש לבצע פעולה מסוימת עם צבע אמיתי. לכן בואו ניקח מערך Integeri, נקרא לו colors ונגדיר את הצבעים עצמם. color.red, color.green, יש לנו color.blue, יש לנו את yellow, יש לנו את cyan, והאחרון יהיה לנו את מג'נטה.
והנה יש לנו גם פריטים להצגה וגם פריטים שהם הצבעים עצמם. בואו נקרא לזה color names, קצת יותר משמעותי מ-items ואפשר את זה לשנות ל-color values.
אוקיי, אז מה שנשאר לנו לעשות זה לבנות את ה-alert dialog, נבנה פה alert-dialog = new alert-dialog.builder ניתן לו את ה-context שזה אנחנו ונתחיל להשתמש ב-builder design pattern.
עכשיו יש לנו פה את ה-set-icon והנה יש לנו כאן איזשהו איקון של צבעים בואו ניתן לו r.durable.colors לאחר מכן ניתן לו set-title.select-color לאחר מכן ניתן לו set cancelable false כדי שהיוזר יהיה חייב להתייחס ולא ללחוץ מחוץ לתיבה לאחר מכן יש לנו set negative button מה אנחנו רוצים לעשות אם היוזר רוצה לבטל אז בואו
נגדיר cancel וכאשר הוא מבטל אנחנו בעצם לא רוצים להפעיל שום פונקציה אף אפשר פשוט במקרה הזה לשלוח null ושום דבר לא יתבצע אם הוא לוחץ cancel רק התיבה נסגרת לה. ולבסוף יש לנו את set items וב-set items כאן אנחנו בעצם נותנים לו את הרשימה של הצבעים זה יהיה color names ומה אנחנו רוצים לעשות במידה והיוזר ילחץ על
הפריט ברשימה איזה פונקציה אנחנו רוצים שהוא יקרא לה בואו ניתן this לבסוף אנחנו רוצים ויש לנו כאן את האלרט דיאלוג שנוצרת לנו, שימו לב שאנחנו עדיין צריכים לגרום להורשה של האינטרפייס ואז אנחנו פשוט קוראים לאלרט דיאלוג נקודה show בכדי להציג את הרשימה.
מה שנשאר לנו לעשות זה לרשת את האינטרפייס המתאים, בואו נראה אם הוא מאפשר לנו בצורה כזאת, לא, הוא לא מאפשר, אז האינטרפייס שאנחנו צריכים לרשת, בואו ניגש לכאן ו-implement dialogue interface.onclicklistener בואו ניגש
ונעשה לו implement methods נוריד את הדירקטיב אנחנו רואים שיש לנו פונקציה אחת ויחידה onclick אבל יש לנו כאן בעיה כי הרשימה הזאת של הצבעים נמצאת לוקאלית בתוך הלחצן ולא גלובלית לכן בואו רגע נוציא אותה כרשימה גלובלית ואולי אחר כך נשנה את זה בצורה מסוימת הנה עכשיו הרשימה היא גלובלית,
בעצם אולי הוא ייתן לי להגדיר הכל פה במקרה, בואו ננסה את זה, כן, זה נראה בסדר. וכל מה שאנחנו רוצים לעשות כאן זה לקבל את האינדקס שזה הוויץ' שנלחץ לגשת לקולורס ולצבוע את המיין אקטיביטי.
הנה יש לנו כאן רפרנס למיין אקטיביטי, אנחנו רוצים לבוא ולומר set color ולשלוח את color values במיקום witch שהwitch זה בעצם הפריט שנבחר כלומר האינדקס שלו בואו נבדוק את זה בואו ניגש ונלחץ על select color הנה מוצגת לנו רשימת הצבעים הנה יש לנו כאן את הכותרת ואת האייקון יש לנו את הלחצן cancel אם אנחנו לוחצים מבחוץ לא קורה כלום cancel פשוט מבטל ובגלל ששלחנו not
אבל לא קורה כלום ואם הוא בוחר באיזשהו פריט אז אנחנו יודעים איזה פריט נלחץ ומשתמשים