התאמה אישית של רשימה דינמית חלק מ-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).