نصائح للاستخدام المهني لبرنامج RecyclerView. الجزء الأول

نصائح للاستخدام المهني لبرنامج RecyclerView. الجزء الأول


قررت كتابة هذا المقال لأنه لاحظت أن العديد من المطورين يرتكبون أخطاء عند استخدام RecyclerView ، على الرغم من أن Google قامت بإصداره منذ فترة طويلة.


تم ذكر النقاط الموضحة هنا في تقارير ومواد مختلفة على Google Devs.


في هذه المقالة ، سأصف بإيجاز النقاط الرئيسية من هذا الفيديو ، ولا يتعين عليك مشاهدته الآن. لكني أوصي بمشاهدته بالكامل بعد قراءة المقال.


1. السمة setHasFixedSize


قم بتعيين السمة recyclerView.setHasFixedSize(true) عندما لا تخطط recyclerView لتغيير حجم التوابع بشكل ديناميكي.


نتيجة لذلك ، لن يتم إعادة رسم recyclerView كل مرة يتم فيها تحديث البيانات في عنصر القائمة ، يتم إعادة رسم هذا العنصر نفسه.


2. انقر فوق المستمع


قم بتعيين معالج النقر في onCreateViewHolder(...) .


عندما يقوم المستخدم بالنقر فوق عنصر قائمة ، يقوم viewHolder بالإبلاغ عن موضع المحول حيث حدثت هذه النقرة ( vh.getAdapterPosition() ). هذا مهم لأنه يمكن نقل العناصر داخل المحول ، ولن يتم إعادة إنشاء مكونات view المرتبطة.


ونتيجة لذلك ، عند إنشاء مكون view ، قد يحدث ما يلي: سيكون عنصر القائمة ، على سبيل المثال ، في الموضع 2 ، ولكن عندما ينقر عليه المستخدم ، سيكون العنصر بالفعل في الموضع 5. وبالتالي ، باستخدام طريقة vh.getAdapterPosition() يضمن الحصول على فهرس القائمة الصحيح.


3. استخدام أنواع مختلفة من مكونات العرض


قم R.layout.view_one layout مباشرة إذا كنت تستخدم أنواعًا مختلفة من مكونات view (على سبيل المثال ، R.layout.view_one ).


إذا كان المحول الخاص بك يدعم أنواعًا مختلفة من مكونات view ، getItemViewType و onCreateViewHolder كما في الصورة أدناه. تحتاج إلى كتابة switch داخل طريقة onCreateViewHolder لتطبيق المنطق الضروري للأنواع المقابلة من مكونات view .


getItemViewType القياسي و onCreateViewHolder


ولكن بدلاً من هذه الأنواع ، يمكنك إرجاع layout الفور. سيوفر لك هذا من كود onCreateViewHolder في onCreateViewHolder :


تم تحميله في onCreateViewHolder


لا يمكن استخدام هذه التقنية باستمرار ، لأن في بعض الأحيان قد تحتاج إلى منطق أكثر تعقيدًا داخل كل layout للحالات المختلفة. ولكن إذا لم تكن هذه هي حالتك ، فإن layout تم إرجاعه هو الطريقة الصحيحة للعمل مع أنواع مختلفة من مكونات view .


4. اختلاف


استخدم DiffUtil لإضافة بيانات جديدة إلى RecyclerView .


كلما تغيرت البيانات في recyclerView ، notifyDataSetChanged() معظم المطورين طريقة notifyDataSetChanged() لعرض البيانات المحدثة على واجهة المستخدم. إنهم ببساطة لا يعرفون أن هذه الطريقة تستهلك الكثير من الموارد ، وأن هذا هو المكان الذي تتعامل فيه DiffUtil بكفاءة أكبر.


DiffUtil هي فئة أداة مساعدة يمكنها حساب الفرق بين قائمتين كقائمة تحديث ، والتي تحول بعد ذلك القائمة الأولى إلى الثانية. يمكن استخدامه لحساب التحديثات في محول recyclerView . لاستخدام DiffUtil ، يجب عليك تنفيذ DiffUtil.Callback ، الذي يحتوي على العديد من الطرق المطلوبة المطلوبة لتطبيق منطق DiffUtil :


الأساليب العامة DiffUtil.Callback


أكبر ميزة لـ DiffUtil هي أنه في RecyclerView يمكنك تحديث نص معين في TextView لعنصر معين ، بدلاً من إعادة رسم القائمة بأكملها. للقيام بذلك ، تحتاج إلى تنفيذ طريقة onChangePayload في DiffUtil.Callback . هناك مقال جيد جدا حول هذا الموضوع.


في الجزء الثاني ، RecyclerView نظرة على نصائح أخرى للاستفادة من RecyclerView جيد.


→ نصائح للاستخدام المهني لبرنامج RecyclerView. الجزء 2

Source: https://habr.com/ru/post/ar425945/


All Articles