سؤال

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

 List<View> views = new ArrayList<View>();
 for(int x =0;x<tagg_views.size();x++){
      lv.addHeaderView(views.get(x));
 }
هل كانت مفيدة؟

المحلول

يبدو أنك تحاول إضافة عدد X من الرؤوس إلى ListView الخاص بك. هذا لا معنى له.

يجب أن تحتوي ListView على عدد من النسخ من نفس العرض ، مع معلومات مختلفة على كل سطر.

مرحبًا ListView يعطي مثالا جيدا على الاستخدام الصحيح لمرض القائمة.

نصائح أخرى

لماذا تضيف وجهات النظر إلى القائمة بنفسك؟ سأكون في غاية يوصي باستخدام أي نوع من ملاءمة مشترك كهربائي للقائمة. سيتعامل المحول مع إنشاء المشاهدات وإعادة تدويرها أثناء التمرير للمستخدم وما إلى ذلك. إذا كنت تستخدم محولًا ، فسيتم تثبيطه لحفظ المراجع إلى طريقة العرض بنفسك كما تفعل في قائمة المشاهدات.

ال addheaderview الطريقة التي تستخدمها يتم صنعها على رأس واحد إلى القائمة التي ستظهر دائمًا في الجزء العلوي من القائمة. هذا يعني أن تسميتها في حلقة لن يكون لها نتيجة معقولة.

انظر إلى Hellolistview مثال يذكر Mayra لفهم كيف تعمل قائمة في Android. لمعرفة كيفية عمل ListAdapter المخصص ، ألق نظرة على هذا الدورة التعليمية تبدو واعدة على الرغم من تنسيق الكود السيئ.

يرتبط ListView مع ومحول. المحول مسؤول عن البيانات المعروضة في ListView. خذ في الاعتبار أن ListView داخليًا ينشئ مجموعة من ITMEs (أو تجمع لكل نوع من العناصر التي يمكن عرضها في حالتك).

لهذا الغرض ، يحتاج محولك إلى تنفيذ الطرق التالية:

  • int getItemViewType (موضع int): احصل على نوع العرض الذي سيتم إنشاؤه بواسطة GetView (int ، view ، viewgroup) للعنصر المحدد. لذلك تحتاج إلى التعرف عليك.
  • int getViewTyPecount (): إرجاع عدد أنواع المشاهدات التي سيتم إنشاؤها بواسطة GetView (int ، view ، viewGroup). يستخدم هذا لإنشاء تجمع لكل نوع من العناصر.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top