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

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

אפשר להתאים אישית 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. המזהה הזה נדרש כי שפעילות או מקטע עשויים להכיל יותר מרשימה ייחודית אחת שניתן לבחור, שכולם צריכים להישאר במצב השמור שלהם.

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

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