PracticU

List Fragment

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA › List Fragment
מילון מושגים:
Fragment - ב-Android, רכיב ממשק הניתן לשימוש חוזר בתוך Activity, שמייצג חלק ממסך או התנהגות.
אירוע - התרחשות שהמערכת מזהה ויכולה להגיב לה, כמו לחיצת עכבר, הקשה או סיום פעולה.
לייאאוט - ארגון וסידור הרכיבים החזותיים על המסך או בדף, כמו מיקום כפתורים, טקסט ותמונות.
Android - מערכת הפעלה מבוססת Linux לטלפונים ולמכשירים ניידים, שפותחה על ידי גוגל.
ירושה - מנגנון בתכנות מונחה עצמים שבו מחלקה יורשת תכונות ופעולות ממחלקת אב, ויכולה להרחיב אותן.
ArrayList - מבנה נתונים של רשימה דינמית שגודלה משתנה, הנפוץ בשפות כמו Java ו-C#.
Activity - ב-Android, רכיב שמייצג מסך יחיד של האפליקציה שאיתו המשתמש מתקשר.

List Fragment
כדי להציג רשימה של פריטים בפרגמנט, יורשים מ-ListFragment במקום מ-Fragment, בדומה ל-ListActivity. ההרצאה בונה פרגמנט שמציגה רשימת חיות ומוסיפה אירוע לחיצה.
בניית הרשימה
1. פרגמנט ו-layout: יוצרים AnimalsFragment רגילה. ב-layout משאירים רק ListView עם match_parent.
2. ה-ID הקבוע: כשעובדים עם ListActivity או ListFragment חובה לתת ל-ListView את ה-ID android:id/list, כי כך הם מוצאים את הרכיב ומאכלסים אותו אוטומטית.
3. ירושה: משנים את AnimalsFragment כך שתירש מ-ListFragment (גרסת ה-support).
4. הנתונים והאדפטר: מגדירים ArrayList<String> בשם animals ומביאים אותו מה-repository עם getAnimals. יוצרים ArrayAdapter<String> עם getContext(), ה-layout android.R.layout.simple_list_item_1 והרשימה, וקוראים ל-setListAdapter.
5. באיזה אירוע: את האדפטר יוצרים ב-onCreate ולא ב-onCreateView, כי onCreateView רצה הרבה פעמים (למשל בחזרה לפרגמנט אחרי החלפה) ואין צורך ליצור את האדפטר כל פעם.
6. במיין אקטיביטי: מוסיפים FrameLayout בשם frameLayoutContainer, ומוסיפים את הפרגמנט כש-savedInstanceState הוא null, עם commit.
תוספות
- לחיצה על פריט: דורסים את onListItemClick, ומציגים Toast עם animals.get(position). בהרצה לחיצה על panda או bunny מציגה את שמם.
- אקטיביטי שרק מציגה פרגמנט: אפשר להגדיר את ה-FrameLayout עצמו כאלמנט השורש של ה-layout, בלי layout אחר סביבו. התוצאה זהה.
- אפשר גם להציג פריטים מותאמים אישית עם adapter מותאם, כמו שנעשה בנושא הרשימות.
כעת אפשר להציג רשימה בפרגמנט באמצעות ListFragment.
השיעור הבא בקורס: Preference Fragment

פרקי ההרצאה: List Fragment

  1. 00:00

    ListFragment כמקבילה ל-ListActivity

  2. 00:38

    יצירת AnimalsFragment

  3. 01:18

    הגדרת ListView עם android.R.id.list

  4. 02:32

    ירושה מ-ListFragment ורשימת החיות

  5. 03:33

    למה ליצור את ה-Adapter ב-onCreate

  6. 04:48

    יצירת ArrayAdapter ו-setListAdapter

תמלול ההרצאה: List Fragment

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

  1. 00:00

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

  2. 00:25

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

  3. 00:42

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

  4. 00:58

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

  5. 01:13

    נבצע פה קצת אסתטיקה בקוד, בצורה כזאת. הדבר הבא שאנחנו הולכים לעשות זה ללכת ל-layout של הפריגמנט. יש לנו פה Frame Layout, ובואו ניפטר פה מהTools, אנחנו לא נצטרך אותו, וניפטר מזה אנחנו לא נצטרך אותו, וכמובן מהText View, ומה שאנחנו רוצים לעשות זה לייצר רכיב List View, נגדיר אותו כMatch Parent, נגדיר אותו כMT Tag, ומה שאנחנו רוצים לעשות זה לתת לו ID.

  6. 01:51

    עכשיו אם אתם זוכרים כאשר אנחנו עבדנו עם ListActivity, ה-ID היה חייב להיות ID ספציפי, זה לא כל ה-ID שאנחנו רוצים. אם אני לא משתמש ב-ListActivity או ב-ListFragment, אז אני יכול לתת איזה ID שאני רוצה, לאתר את הרכיב הזה ב-Java Code ולהכניס לתכו את הרשימה.

  7. 02:13

    אם אני רוצה להשתמש ב-ListActivity או ב-ListFragment, ה-ID חייב להיות Android.id.id.list. למה זה ה-ID שחייב להיות? מפני שאנחנו רוצים שה-ListActivity, או במקרה שלנו הזה, ListFragment, ידעו להכלס אוטומטית את רכיב ה-ListView, ולכן הם מחפשים רכיב שזה בדיוק ה-ID שלו.

  8. 02:39

    Good. מה אנחנו רוצים לעשות? אנחנו עכשיו רוצים לגשת ל-AnimalsFragment, ואנחנו לא רוצים לרשת מ-Fragment, אנחנו רוצים לרשת מ-ListFragment, נגדיר את זה בצורה כזאת, ניקח את ה-SupportV4, יותר חדש, ועכשיו אנחנו רוצים להכלס את ה-List במידע.

  9. 03:02

    אז בואו נגדיר כאן באזור הגלובלי, Private ArrayList, מסוג String, נקרא לו Animals, ויש לנו כאן Repository שהכנתי מקודם, שמכיל פשוט רשימה של חיות. בואו ניגש ונביא את הרשימה הזאת, repository נקודה, getAnimals, יחזיר לנו את כל החיות.

  10. 03:31

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

  11. 03:48

    השאלה היא באיזה אירוע אנחנו עושים את זה. אנחנו יכולים לעשות את זה באירוע OnCreateView, אבל אם אתם זוכרים ב-LifeCycle של הפרגמנט, ראינו שהאירוע OnCreateView מתבצע הרבה פעמים.

  12. 04:02

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

  13. 04:30

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

  14. 04:50

    בואו ניצור פה ArrayAdapter, אנחנו מתעסקים עם סטרינגים אז הוא יהיה מסוג סטרינג, בואו נקרא לו Adapter, נבנה אובייקט חדש מסוג ArrayAdapter, אין צורך בסטרינג הזה ומה שאנחנו רוצים להעביר לו לקונסטרקטור, בואו נפתח כאן את הפרופרטיז, קודם כל והקונטקסט בפרגמנט יש לנו פונקציה שנקראת GetContext אז הנה כבר יש לנו object context הדבר הבא שאנחנו רוצים זה

  15. 05:20

    איזה layout אנחנו רוצים להציג זה יהיה android.r.layout.simple.listItem1 זה layout מאוד פשוט להצגה והדבר האחרון זה מי הוא האוסף שברצה לנו להציג וזה animals good יש לנו כרגע את object adapter בגלל שאנחנו ירשנו את listFragment קיימת לנו הפונקציה setListAdapter ואנחנו

  16. 05:51

    יכולים לשלוח אליה את אובייקט האדפטר.

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

ההרצאה הקודמת: Child Fragment

ההרצאה הבאה: Preference Fragment

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

  • list comprehension
  • פקדי רשימה - List
  • רשימות - List - SharePoint
  • שימוש ב-Fragment ב-React

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

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