התאמה אישית של רשימה דינמית חלק מ-Android Jetpack.

רוצה לנסות את שיטת הכתיבה?
Jetpack Compose היא ערכת הכלים המומלצת לבניית ממשק משתמש ב-Android. איך עובדים עם פריסות ב-Compose

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

שינוי הפריסה

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

  • LinearLayoutManager: מארגנת את הפריטים ברשימה חד-ממדית. באמצעות RecyclerView עם LinearLayoutManager מספק פונקציונליות כמו ListView הפריסה שלו.
  • GridLayoutManager: הפריטים מסודרים בתצוגת רשת דו-מימדית, כמו ריבועים בשחמט. שימוש ב-RecyclerView עם GridLayoutManager מספק פונקציונליות כמו GridView הפריסה שלו.
  • StaggeredGridLayoutManager: הפריטים מסודרים בתצוגת רשת דו-מימדית, כאשר כל עמודה מוסטת מעט מהעמודה שלפניה, כמו הכוכבים בדגל ארה"ב.

אם מנהלי הפריסה האלה לא מתאימים לצרכים שלך, אפשר ליצור אותם הרחבה RecyclerView.LayoutManager שיעור מופשט.

הוספת אנימציות לפריטים

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

הפעלת בחירה של פריטים מהרשימה

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

כדי להוסיף תמיכה בבחירה למכונה של RecyclerView:

  1. קובעים באיזה סוג של מפתח בחירה להשתמש, ואז יוצרים ItemKeyProvider.

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

    למידע מפורט על סוגים של מפתחות בחירה, אפשר לעיין במאמר SelectionTracker.Builder

  2. יישום ItemDetailsLookup
  3. ItemDetailsLookup מאפשר לספריית הבחירות לגשת למידע על פריטים של RecyclerView לפי MotionEvent. זה למעשה מפעל לייצור ItemDetails שמגובים על ידי קובץ Cookie או נשלפו ממנו RecyclerView.ViewHolder מכונה.

  4. עדכון הפריט View אובייקטים ב- RecyclerView כדי לשקף אם המשתמש בוחר מבטל את הבחירה שלהן.

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

    • בעוד onBindViewHolder(), אפשר להתקשר setActivated()לא setSelected() – פועל את האובייקט View עם true או false, תלוי בפריט מסומנת.
    • מעדכנים את העיצוב של התצוגה כך שמייצג את סטטוס ההפעלה. רביעי מומלץ להשתמש מצב הצבע רשימה של משאבים כדי להגדיר את הסגנון.
  5. משתמשים ב-ActionMode כדי לספק למשתמש כלים לביצוע פעולה על הבחירה.
  6. כדי לקבל התראה כשהבחירה משתנה, צריך לרשום SelectionTracker.SelectionObserver. כשנוצרת בחירה, בפעם הראשונה, להתחיל את ActionMode כדי להציג את זה למשתמש ולספק פעולות ספציפיות לבחירה. לדוגמה, אפשר להוסיף לחצן מחיקה עמודה אחת (ActionMode) ומחברים את חץ החזרה אחורה בסרגל כדי לנקות את המבחר. כשהבחירה הופכת לריקה — אם המשתמש מנקה את בחירה בפעם האחרונה – סיום מצב הפעולה.

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

  9. אספו את כל הפריטים באמצעות SelectionTracker.Builder.
  10. הדוגמה הבאה מראה איך להרכיב את החלקים האלה:

    Kotlin

        var tracker = SelectionTracker.Builder(
            "my-selection-id",
            recyclerView,
            StableIdKeyProvider(recyclerView),
            MyDetailsLookup(recyclerView),
            StorageStrategy.createLongStorage())
                .withOnItemActivatedListener(myItemActivatedListener)
                .build()
        

    Java

        SelectionTracker tracker = new SelectionTracker.Builder<>(
                "my-selection-id",
                recyclerView,
                new StableIdKeyProvider(recyclerView),
                new MyDetailsLookup(recyclerView),
                StorageStrategy.createLongStorage())
                .withOnItemActivatedListener(myItemActivatedListener)
                .build();
        

    כדי ליצור SelectionTracker למשל, האפליקציה שלכם צריכה לספק RecyclerView.Adapter שבהן משתמשים כדי לאתחל את RecyclerView SelectionTracker.Builder מהסיבה הזו, אחרי שיוצרים את במכונה אחת (SelectionTracker), צריך להחדיר אותו RecyclerView.Adapter. אם לא, לא ניתן לבדוק את הסטטוס של הפריט סטטוס נבחר מה-method onBindViewHolder().

  11. כלול את הבחירה פעילות אירועים במחזור החיים.
  12. כדי לשמר את מצב הבחירה בכל האירועים במחזור החיים של הפעילות, האפליקציה שלך חייבים לקרוא לפונקציה למעקב אחר הבחירה onSaveInstanceState() וגם onRestoreInstanceState() שיטות onSaveInstanceState() וגם onRestoreInstanceState() שיטות, בהתאמה. האפליקציה שלך צריכה גם לספק מזהה בחירה ייחודי constructor של SelectionTracker.Builder. המזהה הזה נדרש כי שפעילות או מקטע עשויים להכיל יותר מרשימה ייחודית אחת שניתן לבחור, שכולם צריכים להישאר במצב השמור שלהם.

מקורות מידע נוספים

מידע נוסף זמין במשאבי העזרה הבאים.