2010-03-06 6 views
6

मैं ListView उत्पन्न करना चाहता हूं जिसमें कुछ प्रविष्टियों के बीच कुछ डिवाइडर हैं, जैसे कि कुछ संपत्ति वर्गों में इसे देखा जा सकता है। नीचे उदाहरण देखें। मैं List उत्पन्न करने का प्रयास करता हूं जिसमें टेक्स्टव्यू शामिल हैं, इसके बाद सूची के अगले भाग को समझाते हुए फैंसी डिवाइडर में से एक और फिर कुछ टेक्स्ट दृश्य शामिल हैं। यह कैसे किया जा सकता है? मैंने सूची में जोड़ने के लिए अलग-अलग विचार बनाने के बारे में सोचा था? क्या यह जाने का रास्ता है?कुछ वर्गों के ऊपर हेडर के साथ ListView कैसे उत्पन्न करें?

+1

यदि आप स्क्रीनशॉट के समान कुछ बनाते हैं, तो इस तरह की स्क्रीन को android.preference.PreferenceActivity का उपयोग करके बहुत आसानी से बनाया जा सकता है। डिवाइडर एंड्रॉइड का उपयोग करके बनाए जाते हैं: प्राथमिकता श्रेणी तत्व पर शीर्षक विशेषता उसमें लोड की गई प्राथमिकता एक्सएमएल में। एक जवाब के रूप में पोस्ट नहीं कर रहा है, हालांकि, क्योंकि मैं इस मामले में अपनी सूची दृश्य का उपयोग करने के बारे में बात नहीं कर रहा हूं। यह आपके लिए हैडल करता है। –

उत्तर

10

की तलाश में हो सकता है मैं एक समाधान मिल गया। मुझे नहीं पता कि यह सबसे अच्छा है या नहीं।

मैं इस tutorial में वर्णित सूची के लिए ArrayAdapter से व्युत्पन्न कस्टम एडाप्टर का उपयोग करता हूं। एडाप्टर क्लास में मैं जांचता हूं कि getView विधि में स्थिति एक सामान्य पंक्ति है, तो मैं पंक्ति लेआउट को फुलाता हूं। यदि यह एक नए समूह की पहली पंक्ति है, तो मैं एक शीर्षक लेआउट बढ़ाता हूं जो एक सामान्य पंक्ति है और इसके ऊपर समूह शीर्षक है।

यदि आप हेडर को अपनी पंक्तियों में से एक में मिश्रित नहीं करना चाहते हैं। निम्नलिखित समाधान पर विचार करें:

आप दो विधियों getItemViewType और getViewTypeCount को ओवरराइट कर सकते हैं। अब आपके पास एक सूची है जो विभिन्न पंक्तियों को प्रदर्शित कर सकती है। आपको GetView विधि में आइटम के लिए अपेक्षित दृश्य प्रकार की जांच करने की आवश्यकता है और इसके आधार पर विभिन्न लेआउट को फुलाएं।

यह सूची आपके लिए रीसाइक्लिंग को इस तरह से संभालती है कि यह आपके getView विधि में केवल सही रीसायकल दृश्यों को वापस लाएगा, इसका मतलब है कि रीसायकल व्यू शून्य नहीं है, इसका उपयोग आपके वर्तमान सेल को प्रदर्शित करने के लिए किया जा सकता है।

1

मुझे लगता है कि आप android.widget.ExpandableListView

http://developer.android.com/reference/android/widget/ExpandableListView.html

+0

मुझे लगता है कि विस्तार योग्य सूची एक वृक्ष दृश्य की तरह है। जैसा कि यहां देखा गया है: http: //mylifewithandroid.blogspot.com/2008/05/expandable-lists.html – Janusz

+0

यह दो-स्तर की सूची है। हालांकि, यह आपके उदाहरण में बड़ी नारंगी प्रविष्टियों के रूप में शीर्ष-स्तरीय प्रविष्टियों का उपयोग करके आपके उदाहरण की तरह दिखने में शामिल हो सकता है। अब जब मैंने इसे और अधिक सोचा है, तो मुझे लगता है कि एक बदसूरत समाधान हो सकता है। –

3

यदि आप जीपीएलवी 3 स्वीकार्य हैं (कुछ अपस्ट्रीम कोड के कारण लाइसेंस प्राप्त है) तो आप मेरे SectionedAdapter का उपयोग कर सकते हैं। यदि आप कुछ और अधिक लचीला और कम सीमित लाइसेंस (अपाचे 2) के साथ, तो आप मेरे MergeAdapter का उपयोग कर सकते हैं।

+0

बस MergeAdapter का उपयोग कर आवश्यक सब कुछ लागू किया। यह वही है जो मैं खोज रहा था! धन्यवाद, मार्क (हमेशा के रूप में सहायक)। –

0

मुझे इसके उत्तर में भी रूचि है। ऐसा करने के लिए एक और अधिक सरल तरीका होना चाहिए।

एडाप्टर को देखने में, एक विधि है, Adapter.getItemViewType (int स्थिति)।

ListView एक वापसी मूल्य परिभाषित करता है, ITEM_VIEW_TYPE_HEADER_OR_FOOTER जो इंगित करता है कि लौटाया गया आइटम हेडर या पाद लेख है या नहीं।

मैंने कोशिश नहीं की है, लेकिन मुझे लगता है कि क्या आप अपना एडाप्टर बनाते हैं और एक आइटम को उस प्रकार के साथ वापस करते हैं जो इंगित करता है कि यह एक हेडर या पाद लेख है, जो ListView इसे उचित रूप से प्रदर्शित करेगा।

+0

मुझे लगता है कि हेडर और पाद लेख वास्तव में केवल हेडर और पाद लेख दृश्यों के लिए उपयोग किया जाता है। वे विचार सूची के ऊपर और नीचे हैं। – Janusz

संबंधित मुद्दे