سؤال

في قوتي، أحتاج إلى طرق عرض الرأس والتذييل (في أعلى وأسفل القائمة) لاستخدامها كصفحة سابقة وأزرار الصفحة التالية على قائمتي، على التوالي، لأنني أريد عرض 20 عنصر فقط في كل مرة.

أنا وضعت وجهات نظر رأسي والقدم من خلال القيام:

getListView().addHeaderView(myHeaderView);
getListView().addFooterView(myFooterView);
setListAdapter(adapter);

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

المشكلة هي أنه لا يمكنني استدعاء addheaderview أو addfooterview بعد أن قمت بتسميت setlistadapter.

هل هناك طريقة للتغلب على ذلك؟

هل كانت مفيدة؟

المحلول

لماذا لا ينهار فقط الرأس والتذييل إلى الارتفاع الصفر، أو الرمادي خارج الأزرار (أفضل).

وأفضل تجربة مستخدم، في رأيي، سيكون لتحميل المزيد من العناصر عند الحاجة (أي عند التمرير)، مثل تطبيق Gmail المدمج.

نصائح أخرى

نعم، هذا خطأ أو رقابة في ListView عنصر. يمكنك العمل حول هذا عن طريق كتابة الخاصة بك WrapperListAdapter هذا يتعامل مع إضافة وإزالة عناصر القائمة الثابتة، ولكن يمكنني أن أخبرك أنها ليست واضحة تماما للقيام بها.

بدلا من ذلك - وأسهل بكثير - يمكنك إضافة مكون ثابت أعلاه أو أسفل ListView حيث تضع الأزرار التالية والسابقة.

ماذا عن إعادة تعيين المحول في كل مرة تحتاج إلى إضافة طريقة عرض الرأس، مثل هذه الطريقة:

ListView.FixedViewInfo headerInfo = getListView().new FixedViewInfo();
headerInfo.isSelectable=false ;
headerInfo.view = feedInfoView;
headerInfos.add(headerInfo);
headerViewListAdapter = new HeaderViewListAdapter(headerInfos,null,adapter);
getListView().setAdapter(headerViewListAdapter);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top