התאמה אישית של רשימה דינמית חלק מ-Android Jetpack.
אתם יכולים להתאים אישית את האובייקטים של 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
:
- קובעים באיזה סוג של מפתח בחירה להשתמש, ואז יוצרים
ItemKeyProvider
.יש שלושה סוגים עיקריים של פריטים שאפשר להשתמש בהם כדי לזהות את הפריטים שנבחרו:
Parcelable
ואת מחלקות המשנה שלו,Uri
String
Long
למידע מפורט על סוגים של מפתחות בחירה, אפשר לעיין במאמר
SelectionTracker.Builder
- יישום
ItemDetailsLookup
- עדכון הפריט
View
אובייקטים ב-RecyclerView
כדי לשקף אם המשתמש בוחר מבטל את הבחירה שלהן.בספריית הבחירות אין קישוט חזותי שמוגדר כברירת מחדל לפריטים שנבחרו. יש לציין את הערך הזה כשמפעילים את
onBindViewHolder()
. מומלץ לפעול לפי הגישה הבאה:- בעוד
onBindViewHolder()
, אפשר להתקשרsetActivated()
– לאsetSelected()
– פועל את האובייקטView
עםtrue
אוfalse
, תלוי בפריט מסומנת. - מעדכנים את העיצוב של התצוגה כך שמייצג את סטטוס ההפעלה. רביעי מומלץ להשתמש מצב הצבע רשימה של משאבים כדי להגדיר את הסגנון.
- בעוד
- משתמשים ב-
ActionMode
כדי לספק למשתמש כלים לביצוע פעולה על הבחירה. - ביצוע פעולות משניות שפורשו.
- אספו את כל הפריטים באמצעות
SelectionTracker.Builder
. - כלול את הבחירה פעילות אירועים במחזור החיים.
ItemDetailsLookup
מאפשר לספריית הבחירות לגשת למידע על פריטים של RecyclerView
לפי MotionEvent
.
זה למעשה מפעל לייצור
ItemDetails
שמגובים על ידי קובץ Cookie או נשלפו ממנו
RecyclerView.ViewHolder
מכונה.
כדי לקבל התראה כשהבחירה משתנה, צריך לרשום SelectionTracker.SelectionObserver
. כשנוצרת בחירה, בפעם הראשונה,
להתחיל את ActionMode
כדי להציג את זה למשתמש ולספק
פעולות ספציפיות לבחירה. לדוגמה, אפשר להוסיף לחצן מחיקה
עמודה אחת (ActionMode
) ומחברים את חץ החזרה אחורה בסרגל כדי לנקות
את המבחר. כשהבחירה הופכת לריקה — אם המשתמש מנקה את
בחירה בפעם האחרונה – סיום מצב הפעולה.
בסוף צינור עיבוד האירועים, הספרייה עשויה לקבוע
שהמשתמש מנסה להפעיל פריט, בהקשה עליו, או
שמנסה לגרור פריט או קבוצה של פריטים שנבחרו. מגיבים
על ידי רישום המאזין המתאים. למידע נוסף, ראו SelectionTracker.Builder
.
הדוגמה הבאה מראה איך להרכיב את החלקים האלה:
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()
.
כדי לשמר את מצב הבחירה בכל האירועים במחזור החיים של הפעילות, האפליקציה שלך
חייבים לקרוא לפונקציה למעקב אחר הבחירה
onSaveInstanceState()
וגם
onRestoreInstanceState()
שיטות
onSaveInstanceState()
וגם
onRestoreInstanceState()
שיטות, בהתאמה. האפליקציה שלך צריכה גם לספק מזהה בחירה ייחודי
constructor של SelectionTracker.Builder
. המזהה הזה נדרש כי
שפעילות או מקטע עשויים להכיל יותר מרשימה ייחודית אחת שניתן לבחור,
שכולם צריכים להישאר במצב השמור שלהם.
מקורות מידע נוספים
מידע נוסף זמין במשאבי העזרה הבאים.
- חמנית
את אפליקציית ההדגמה, שמשתמשת ב-
RecyclerView
. - שימוש RecyclerView כדי להציג רשימה של אפשרויות גלילה.
- ב-Android Kotlin Fundamentals: RecyclerView Fundamentals (היסודות של RecyclerView).