2010-01-07 11 views
14

मेरी सूची में सक्रियता में, मुझे क्रमशः मेरी सूची में पिछले पृष्ठ और अगले पृष्ठ बटन के रूप में उपयोग करने के लिए शीर्षलेख और पाद लेख (सूची के शीर्ष और नीचे) की आवश्यकता है, क्योंकि मैं चाहता हूं एक समय में केवल 20 आइटम प्रदर्शित करें।एंड्रॉइड सूचीदृश्य: शीर्षलेख और पाद लेख विचार

मैं ऐसा करके मेरी शीर्षक और पैर विचारों सेट:

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

यह ठीक काम करता है, लेकिन मैं गतिशील रूप से हटाने और इन शीर्ष लेख और पाद दृश्य जोड़ने के लिए है, क्योंकि मेरी सूची के कुछ पृष्ठ एक अगले नहीं हो सकता है की जरूरत है पेज बटन या पिछला पृष्ठ बटन।

समस्या यह है कि, मैं setListAdapter कहने के बाद addHeaderView या addFooterView को कॉल नहीं कर सकता।

क्या इसके आसपास कोई रास्ता है?

+0

मैं सामान्य रूप से एक दृश्य बनाने के ठीक पहले मैं एडाप्टर सेट एक पाद लेख के रूप में स्थापित करने के लिए द्वारा इस के आसपास हैक, और फिर फिर से दृश्य को हटा रहा है। –

+0

यह एक बग और न ही एक निरीक्षण है, लेकिन इरादे के रूप में काम कर रहा है :) –

+1

क्या आप थोड़ा विस्तार कर सकते हैं? – Matthias

उत्तर

10

क्यों शून्य ऊंचाई पर हेडर और पाद लेख को न पतनें, या बटन को ग्रे (यहां तक ​​कि बेहतर) क्यों न करें।

और मेरी राय में सबसे अच्छा उपयोगकर्ता अनुभव, आवश्यकतानुसार अधिक आइटम लोड करना होगा (यानी स्क्रॉल पर), जैसे अंतर्निहित जीमेल ऐप करता है।

+4

गतिशील लोडिंग दृष्टिकोण पर सहमति हुई। मैंने इसके साथ सहायता करने के लिए कुछ पुन: प्रयोज्य कोड भी बनाया: http://github.com/commonsguy/cwac-endless – CommonsWare

+3

अगर मुझे सही याद है, तो 'ListView' हेडर या फ़ूटर दृश्यों को फिर से लेआउट नहीं करता है, भले ही आप सेट करते हों 'अविश्वसनीय' या 'GONE'' की उनकी दृश्यता, इसलिए आपको एक बड़ी रिक्त स्थान के साथ छोड़ दिया गया है। –

+0

किसी भी दर पर, उन्हें छुपाकर झटकेदार होगा; बेहतर ध्वनि को अक्षम करना। और मार्क (commonsware.com) दृष्टिकोण शायद सबसे अच्छा है। –

3

हां, यह ListView घटक में एक बग या निरीक्षण है। आप अपना खुद का WrapperListAdapter लिखकर इस पर काम कर सकते हैं जो निश्चित सूची आइटम जोड़ने और निकालने में संभालता है, लेकिन मैं आपको बता सकता हूं कि यह पूरी तरह से सरल नहीं है।

वैकल्पिक रूप से — और बहुत आसान — आप ListView के ऊपर या नीचे एक निश्चित घटक जोड़ सकते हैं जहां आप अगले और पिछले बटन डालते हैं।

+1

एक अपडेट के रूप में, जैसा कि रोमैन गाय का उल्लेख है, यह इरादा व्यवहार है। मैंने एंड्रॉइड "ऑफिस घंटों" से पूछा कि यह मामला क्यों है।जो मुझे याद है, ऐसा इसलिए है क्योंकि जब सूची कर्सर से बंधी जाती है तो हेडर और फ़ूटर को सूची आइटम के रूप में ध्यान में रखा जाता है, इसलिए उन्हें जोड़ना/निकालना ऑफसेट को गड़बड़ कर देगा। यदि आप कोई परिवर्तन करना चाहते हैं तो आप एडाप्टर को सूची में पुन: जोड़ सकते हैं। यह अच्छा होगा अगर एक रैपर था जो एसडीके में इसे संभाल सकता था, लेकिन वैसे भी अपना खुद का निर्माण करना संभव है। –

2

कैसे के बारे में हर बार जब आप शीर्ष लेख दृश्य जोड़ने की जरूरत पर अनुकूलक रीसेट, इस तरह की तरह:

ListView.FixedViewInfo headerInfo = getListView().new FixedViewInfo(); 
headerInfo.isSelectable=false ; 
headerInfo.view = feedInfoView; 
headerInfos.add(headerInfo); 
headerViewListAdapter = new HeaderViewListAdapter(headerInfos,null,adapter); 
getListView().setAdapter(headerViewListAdapter); 
+0

feedInfoView किस प्रकार की ऑब्जेक्ट है? –