
Animal עם שני שדות, type (סוג החיה, למשל כלב או ארנב) ו-description, עם getters, setters וקונסטרקטור (Alt+Insert).getImageId(), שמחזירה context.getResources().getIdentifier(...) על שם הסוג באותיות קטנות, מתיקיית drawable ועם context.getPackageName(). שמות התמונות הם שמות החיות באותיות קטנות.MyApp מהפרויקט הקודם, שמכילה את הקונטקסט ואת isPortrait ו-isLandscape. מגדירים אותה במניפסט ב-android:name=".MyApp", וקוראים ל-MyApp.getContext().Animal מממשת Serializable, כי נרצה להכניס אותה ל-Bundle ולהעביר בין פרגמנטים ואקטיביטיז. (Parcelable היא אפשרות נוספת.)ArrayList<Animal> של כל החיות.item_animal עם LinearLayout אופקי ו-gravity מסוג center_vertical, ובו ImageView בגודל 70dp ב-ID imageViewAnimal ו-TextView ב-ID textViewType (גודל 25sp, צבע כחול). את src ואת text מחליפים ל-tools: כדי שיוצגו רק בדיזיינר.AnimalsAdapter יורשת ArrayAdapter<Animal>, מקבלת Context ו-ArrayList<Animal>, וקוראת ל-super עם 0 כ-layout. שומרת LayoutInflater מ-LAYOUT_INFLATER_SERVICE.R.layout.item_animal עם root של null, משיגה את שני הרכיבים, מקבלת את החיה עם getItem(position), ומציבה setImageResource(animal.getImageId()) ו-setText(animal.getType()). מחזירה את ה-root.הטקסט המלא של הדקות הראשונות בהרצאה «Creating the Data to Display» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
הדבר הראשון שאנחנו הולכים לבנות במערכת של Master Details זה בעצם את התשתיות עצמן. חלק מהתשתיות זה בעצם המחלקה שמתארת את הדאטה שברצנו להציג. אם אנחנו רוצים להציג לדוגמה רשימה של מוצרים אז הדאטה יהיה מוצר.
אם אנחנו רוצים להציג רשימה של לקוחות אז דאטה יהיה לקוח. רשימה של בוא נניח ספקים אז הדאטה יהיה ספק. אם אנחנו רוצים להציג רשימה של חיות, אז הדאטה שלנו הוא חייכת, ולכן אנחנו צריכים להוסיף מחלקה שמתארת חיה, Animal.
אז בואו ניגש ונוסיף את המחלקה הזאת, נבצע New Java Class, נקרא לה Animal, ובואו נראה מה הפריטים שאנחנו רוצים שיהיה לנו עבור כל חיה. אז מה שאנחנו רוצים שיהיה לנו זה קודם כל איזשהו טייפ, שזה סוג החיה, כלב, חתול, ארנב וכדומה, ואיזשהו דסקריפשן, כלומר תיאור עבור החיה.
בואו נתחיל לבנות לעצמנו גטרים, סטרים, קונסטרקטורים וכדומה. נלחץ Alt-Insert, וניגש קודם כל לגטרס ולסטרס. נגיד שאנחנו רוצים את שניהם.
לאחר מכן Alt-Insert, נגיד שאנחנו רוצים קונסטרקטור שיחיל את שני החברה האלה. פשוט נקרא לסט טייפ ולסט דסקריפשן. ויש לנו כאן כל מיני תמונות של חיות שעבדנו איתן בעבר.
התמונות בכוונה מכילות את השם של החיה, כמובן באותיות קטנות. אז בואו נצרף עוד פונקציה שנקראת public, היא מחזירה int, והיא נקראת get image id. והפונקציה הזאת מחזירה לנו את ה-id של התמונה.
בשביל להשיג את ה-ID של התמונה, אנחנו צריכים את הקונטקסט הגלובלי שעבדנו איתו כל הזמן. אז יש לנו כאן בדסטופ את My App, בואו נבצע Copy, נחזור בחזרה ונבצע Paste, נבצע אוקיי, והנה יש לנו פה את My App שמכילה את הקונטקסט הגלובלי, וגם היא מכילה, שתי פונקציות שעבדנו איתם או שבנינו אותם בעבר, isPortrait וisLandscape,
שאנחנו יכולים להשתמש איתם בהמשך. עכשיו, תזכורת, ברגע שאנחנו רוצים שהאפליקציה שלנו תתייחס בכלל למחלקה MyApp שיורשת את אפליקיישן, אנחנו צריכים לגשת למניפסט ולהגדיר כאן name.myApp.
כמובן הנקודה זה הפקאג' הכללי של האפליקציה. עכשיו, באמת הקונטקסט יאוכלס בקונטקסט של האפליקיישן, ואנחנו יכולים להשתמש איתו בכל מקום. אנחנו רוצים כאן להביא את הקונטקסט על ידי myApp.getContext, ואם יש לנו את הקונטקסט, אנחנו יכולים to return context, getResources, getIdentifier, ואז לפי הטייפ, הסוג של החיה,
בני, deer, duckling וכדומה, אנחנו רוצים קודם כל להפוך את זה לlower קייס, כי יכול להיות שהטייפ הוא מתחיל בעוד גדולה, ומתוך תיקיית drawable, אנחנו רוצים לקבל את החיה, אנחנו צריכים להביא פה רק את הדפולט פאקאג', וזה יהיה context get package name אז השורה הזאת basically פשוט מביאה את ה-id של התמונה שמייצגת את החיה
כאשר אנחנו משתמשים בקונטקסט הגלובלי אז ככה זה מאוד מאוד פשוט שיש לנו איזושהי פונקציה שנקרא את get image id והיא חלק מהתשתית של האנימל הדבר הבא שכדאי לנו לעשות כבר עכשיו זה to implement את serializable, כי אנחנו הולכים ליצור obiect animal ולשלוח אותו, בואו נניח מפרגמנט אחת לאקטיביטי לפרגמנט אחרת, אנחנו רוצים להכניס obiect animal לתוך
bundle למעשה, ובכדי שנוכל לעשות את זה, אז אנחנו חייבים או לרשת את Parcelable או לרשת את Serializable, לצורך הפשטות כרגע נירש את Serializable.
כעת אנחנו יכולים להוסיף מחלקה נוספת שיש לנו תקן מוכנה מראש של הריפוזיטורי שמכילה את הרשימה של כל החיות. בואו נבצע copy, ניגש ונבצע paste ונדביק את הריפוזיטורי, ויש לנו כאן את כל החיות כאשר אנחנו מחזירים הרייליסט של animal.
אם יש לנו את האנימל ואת הריפוזיטורי, אנחנו יכולים בשלב הזה לגשת ולייצר לעצמנו layout שמציג חיה אחת. ואנחנו הולכים להציג את ה-layout הזה ברשימה, כלומר במאסטר.
אז זה מתבצע על ידי כמובן הוספת layout חדש.