2011-10-30 13 views
14

मैं संपर्क ऐप की तरह एंड्रॉइड लिस्टव्यू में कुछ सेक्शन हेडर खींचना चाहता हूं। जब सूचीदृश्य खींच लिया गया था तो अनुभाग हेडर स्पष्ट रूप से आगे बढ़ेगा, धन्यवाद।आईओएस के UITableview की तरह एंड्रॉइड सूचीदृश्य में सेक्शन हेडर कैसे आकर्षित करें?

उत्तर

19

बस इस Android – Sectioned Headers in ListViews उदाहरण को देखें, यह अच्छी तरह से वर्णन करता है कि ListViews में सेक्शन हेडर को कैसे कार्यान्वित किया जाए।

और

android-amazing-listview

Jeff Sharkey's SeparatedListAdapter

MergeAdapter by CommonsWare

धन्यवाद।

+0

धन्यवाद, मैं पहले से ही इस समस्या को हल कर दिया है। – stream

+0

क्या इनमें से कोई भी लिंक स्क्रीन के शीर्ष पर शीर्षलेख पंक्ति को पिन करने में सहायता करता है क्योंकि उपयोगकर्ता अनुभागों के माध्यम से स्क्रॉल करता है? – topwik

+0

@towpse - अरे मुझे तुम्हारा क्या मतलब नहीं मिला? – user370305

3

मैंने पाया एंड्रॉयड में कुछ उदाहरण इस issuse को हल कर सकते हैं: PinnedHeaderListView के बारे में PinnedHeaderListView Example

12

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

एडेप्टर "getView" विधि में, पिछले नाम आइटम "नाम फ़ील्ड" के पहले अक्षर के साथ "नाम फ़ील्ड (यदि आप नाम के लिए रिकॉर्ड में दिखा रहे हैं)" का पहला अक्षर देखें। यदि यह हेडर लेआउट (एक टेक्स्ट व्यू के साथ) को छिपाता है तो हेडर लेआउट को हेडर टेक्स्ट के साथ नाम फ़ील्ड का पहला अक्षर दिखाते हुए दिखाएं।

यहाँ कोड

स्ट्रिंग nameFirstLetter = 'ए' है; // इसे वैश्विक रूप से घोषित करें, getView के अंदर नहीं।

// getView स्ट्रिंग nameF = Name.slice (0,1) के अंदर;

if(!nameFirstLetter.equals(nameF)){ 
     nameFirstLetter = nameF ;   
     holder.headerText.setText(nameFirstLetter); 
     holder.headerLayout.setVisibility(View.VISIBLE); 
    }else{ 
     holder.headerLayout.setVisibility(View.GONE); 
    } 

एंड्रॉइड सूची दृश्य में सेक्शन हेडर दिखाने का यह सबसे आसान तरीका है, लेकिन यह आईफोन सेक्शन हेडर, यानी काम नहीं करेगा। जब हम ऊपर/नीचे स्क्रॉल करते हैं तो अनुभाग शीर्षलेख अन्य सूची आइटम के साथ छिपाता है।

+0

यदि सूची आइटम क्लिक करने योग्य हैं, तो यह हेडर क्लिक करने योग्य बनाता है। विशेष रूप से आधुनिक एंड्रॉइड में लहरों के साथ, यह अब उपयोगकर्ताओं के लिए स्पष्ट रूप से स्पष्ट है। –

3

यदि किसी को किसी अन्य समाधान की आवश्यकता है, विशेष रूप से उन लोगों को जो आईओएस विकास के लिए उपयोग किया जाता है, इसे पसंद करते हैं, या आईओएस देखो और महसूस करना चाहते हैं; मैं निम्नलिखित की सिफारिश:

http://applidium.com/en/news/headerlistview_for_android/

तर्क iOS के लिए के रूप में ही है, और के लिए लेग कार्य की सबसे करता है आप

+0

यदि आप अपने जीथब रेपो में जाते हैं, तो परियोजना को बहिष्कृत के रूप में चिह्नित किया गया है: https://github.com/applidium/HeaderListView – ThomasW

0

आप SectionedMergeAdapter में देख सकते हैं। यदि आपके पास डेटा की कई उप-सूचियां हैं, तो आप उन्हें एक साथ सिलाई कर सकते हैं और उनके लिए शीर्षलेख रख सकते हैं।

उदाहरण कोड -

ListView listView = (ListView) findViewById(android.R.id.list); 

ArrayAdapter<Integer> adapter1 = 
     new ArrayAdapter<>(this, R.layout.item_list, android.R.id.text1, arrayList1); 
ArrayAdapter<Integer> adapter2 = 
     new ArrayAdapter<>(this, R.layout.item_list, android.R.id.text1, arrayList2); 
ArrayAdapter<Integer> adapter3 = 
     new ArrayAdapter<>(this, R.layout.item_list, android.R.id.text1, arrayList3); 

TextView tv1 = new TextView(this); 
tv1.setText("Header 1"); 
TextView tv2 = new TextView(this); 
tv2.setText("Header 2"); 
TextView tv3 = new TextView(this); 
tv3.setText("Header 3"); 

SectionedMergeAdapter adapter = new SectionedMergeAdapter(); 

adapter.addSection(new SectionedMergeAdapter.Section(tv1, adapter1)); 
adapter.addSection(new SectionedMergeAdapter.Section(tv2, adapter2)); 
adapter.addSection(new SectionedMergeAdapter.Section(tv3, adapter3)); 

listView.setAdapter(adapter); 
संबंधित मुद्दे