
GridView ברוחב וגובה match_parent עם id. התכונות שמגדירים: columnWidth (90dp), numColumns (ערך קבוע, או auto_fit להתאמה אוטומטית למכשיר), verticalSpacing ו-horizontalSpacing (10dp) ו-gravity במרכז.AnimalsAdapter extends BaseAdapter, עם מימוש הפונקציות. בה מערך של מזהי ה-drawable של עשר תמונות החיות, שוכפל פי שלושה כדי ליצור נפח.getCount מחזירה את אורך המערך. getItem ו-getItemId לא נדרשות כאן. getView מחזירה את ה-ImageView של כל תא.convertView מייצג רכיב שכבר נוצר בעבר. אם הוא null יוצרים ImageView חדש עם Context שהתקבל בקונסטרקטור ו-GridView.LayoutParams של 200 על 200 פיקסלים. אחרת משתמשים בו שוב. בסוף קוראים ל-setImageResource עם המזהה במיקום הנתון ומחזירים את ה-ImageView.setAdapter(new AnimalsAdapter(this)).setOnItemClickListener על ה-GridView, כמו ב-ListView. ב-onItemClick ממירים את ה-view שהתקבל ל-ImageView, לוקחים ממנו getDrawable() ומציבים אותו ב-ImageView הנבחר.הטקסט המלא של הדקות הראשונות בהרצאה «Grid View» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
רכיב נוסף שקיים שמאפשר לנו להציג רשימת פריטים נקרא grid view. הרכיב הזה מאפשר לנו להציג רשימת פריטים אבל שמוצגים על ידי תצוגה של גריד, כלומר שורות ועמודות, הוא ממש בנוי לתצוגה של גריד.
בואו נראה איך אנחנו יכולים לעבוד איתו בכדי להציג פריטים בגריד. אז בואו נבנה grid view, נגדיר לו match parent, אפשר לסגור את התגית בצורה כזאת ובואו ניתן לו ID כי אנחנו רוצים להתייחס אליו בקוד ה-Java נקרא לו grid view ונציג Animals גם כאן רשימת החיות שהצגנו מקודם מה אנחנו צריכים להגדיר
לו דבר ראשון מה רוחב של כל עמודה כמה עמודה תופסת column width בואו ניתן בואו נניח 90 dp לאחר מכן כמה עמודות אנחנו רוצים num columns אנחנו יכולים להגדיר לדוגמה 2 שימו לב שהוא מציג לנו את זה פה בתצוגה כשתיים, שלוש, ארבע עמודות, כמה אנחנו רוצים להגדיר.
גם ה-recycler view אפשר לנו להראות את המידע בעמודות, אבל כאן יש לנו ממש שליטה חזקה יותר לגבי איך הגריד נראה.
דבר נוסף שאנחנו יכולים להגדיר זה פשוט auto fit, ואז הוא יתאים את זה אוטומטית למכשיר של היוזר. אז בואו נישאר על auto fit.
הדבר הבא, ורטיקל ספייסינג כמה אנחנו רוצים שיהיה בין רכיב לרכיב מבחינת ספייסינג בואו ניתן לו עשרה dp הדבר הבא יהיה הוריזונטל ספייסינג כמה אנחנו רוצים מרווח בין פריט לפריט מבחינה הוריזונטלית מבחינה אופקית ורטיקל זה כמובן אנכי ולבסוף גרוויטי בואו ניתן לו גרוויטי סנטר שהוא יציג
לנו את כל הפריטים בדיוק באמצע יחסית לגריד עצמו אז הנה יש לנו כרגע את הרכיב של הגריד ואנחנו רוצים לגשת ולבנות מעין אדפטר שיגיד איך בדיוק אנחנו רוצים להציג בתוכו את הפריטים השונים.
הפריטים שאנחנו הולכים להציג אלו אותן תמונות שהצגנו בדוגמאות הקודמות אבל פשוט נזרוק את התמונות ממש בתוך הגריד שיהיו מוצגות בצורה טבלאית.
אז מה שאנחנו רוצים לבנות זאת מחלקה של אדפטר. בואו נוסיף מחלקה ונקרא לה image adapter, נקרא לה בעצם animals adapter ואנחנו רוצים לרשת את בייס האדפטר.
בואו נממש את הפונקציות שלו, ctrl enter implement methods ויש לו סדרת פונקציות שאנחנו צריכים לממש. דבר ראשון בואו נגדיר לנו כאן איזשהו מערך של כל ה-IDs שיש לתמונות וכל מה שאנחנו רוצים לעשות זה פשוט לתת לו את התמונות השונות.
אז בואו ניתן לו r.drawable. ונתחיל לתת את התמונות השונות שיש. בואו נשכפל את זה, יש לנו סך הכל 10 תמונות 23456789SL יש לנו יש לנו את הזיקית, יש לנו את הדיר, דאקלינג, ברווזון, יש לנו אלפנט, שי גראף, קיטן, ינשוף, פנדה ופאפי.
עכשיו, בכדי שיהיה לנו קצת נפח, בואו נשכפל את זה, נניח כפול שלוש פעמים, בכדי שממש יהיה לנו כביכול הרבה תמונות. אוקיי, הדבר הבא שאנחנו רוצים getCount אנחנו צריכים להחזיר כמה פריטים יש זה יהיה imageid.length אורך המערך ב-getItem אנחנו לא צריכים לממש
וב-getItemID אנחנו לא צריכים לממש אנחנו יכולים בשביל שיהיה לנו עוד פונקציונליות להחזיר את האובייקט בפוזישן מסוים או להחזיר איזשהו ID שאמור להיות ID של שורה אנחנו לא ממש צריכים לממש אותם אבל את get view אנחנו צריכים לממש ו-get view מה שהיא עושה זה מחזירה את הפריט שאנחנו צריכים להכניס בתוך כל אחד מהתאים של הגריד view אז מה שאנחנו רוצים לעשות זה להחזיר אובייקט מסוג image view בשביל לשתול
אותו בתוך בואו ניקח image view ונתחיל לבדוק כמה דברים ולהחזיר את ה-image view המתאים דבר ראשון אנחנו מקבלים convert view convert view בעצם זה איזשהו אובייקט מסוג view שמתאר רכיב קודם שהתבצע ריסייקלינג עבורו.
ממש גם כאן יש איזשהו קונספט של ריסייקלינג. זאת אומרת אם היוזר גלה למטה ואז שוב פעם גלה למעלה אז יכול להיות שהמערכת תגיד לנו תקשיבו כבר בניתם את הרכיב הזה הנה הוא האם אתם רוצים עוד פעם להשתמש בו.
אז אנחנו קודם כל רוצים לבדוק אם הדבר הזה הוא שווה לנעל אם כן אנחנו רוצים ליצור אימג' ויו משלנו מפני שאין בו שום דבר שהוצג לפני זה ברכיב הזה אז אנחנו רוצים האמת קונטקסט עבור האימג' ויו אנחנו רואים פה ולכן בואו נבנה לנו כאן איזה שהוא קונסטרקטור נחמד כזה אנימלס אדפטר שמקבל קונטקסט ואז יהיה לנו קונטקסט בואו נבנה כאן
אובייקט מסוג קונטקסט בצורה כזאת יש לנו דיס נקודה קונטקסט שווה קונטקסט האמת הקונסטרקטור עדיף שהוא יהיה אחרי הדאטה ממבר רק מבחינת תכנות קצת יותר אסתטי ועכשיו אנחנו יכולים לקחת את הקונטקסט והנה יש לנו את הקונטקסט.
בואו נגדיר image view set