2013-02-12 14 views
5

मुझे एंड्रॉइड के लिए 3-स्तर-एक्सपेंडेबल लिस्ट व्यू को लागू करने की आवश्यकता है। मैंने इसे ExpListView के साथ एक और ExpListView के बच्चों के रूप में किया है। दो विस्तारणीय सूचियां पहले से ही प्रदर्शित हैं और विस्तार करने में भी सक्षम हैं। लेकिन केवल दूसरे स्तर पर देखा गया है, यदि मैं द्वितीय स्तर की समूह पंक्ति पर क्लिक करता हूं, तीर विस्तारित स्थिति में बदल जाता है, लेकिन तीसरे स्तर की पंक्तियां देखने में सक्षम नहीं हैं। सोचें कि बाहरी ExpListView को तीसरे स्तर की पंक्तियों के लिए स्थान प्राप्त करने के लिए रीफ्रेश करने की आवश्यकता है और शायद पंक्ति गणना को फिर से गणना करने की आवश्यकता है।एंड्रॉइड 3-लेवल-एक्सपेंडेबल लिस्टव्यू तीसरे स्तर पर पंक्तियां नहीं दिखा रहा है केवल

स्टैकवॉफ्लो पर समान प्रश्नों पर एक उदाहरण के लिए केवल एक ही लिंक हैं, जो समाधान मैं समझ नहीं पा रहा हूं/मेरे कार्यान्वयन के अनुकूल नहीं हो सकता। http://mylifewithandroid.blogspot.de/2011/02/3-level-expandable-lists.html

कोई आसान समाधान है या किसी को एक आसान तरीका में यह व्याख्या कर सकते हैं:

लिंक यह है। उपरोक्त लिंक में कोड ने मेरी मदद नहीं की है।

स्पष्टीकरण मैं अब तक क्या किया है: मैं एक layoutInflater का उपयोग कर ExpandableListView पर और उसके getGroupView() I'am में BaseExpandableListAdapter सेट और एक ViewHolder जो एक TextView रखती है (1 स्तर पाठ के रूप में) लिखा गया है के लिए हर एक पंक्ति। getChildView() में मैं एक दूसरे व्यूहोल्डर में एक और विस्तारणीय लिस्ट व्यू का उपयोग कर रहा हूं। उस ExpListView पर मैंने बेसएक्सपैंडेबल लिस्ट एडाप्टर भी सेट किया है और इस एडाप्टर के लिए getGroupView() और getChildView() को भी लागू किया है। समूह के लिए वर्णित पाठ दृश्य के साथ इसे (द्वितीय स्तर के पाठ के रूप में) और यहां के लिए बच्चे (तीसरे स्तर के पाठ के रूप में) के साथ किया गया।

यदि इसकी आवश्यकता है तो मैं कल कुछ कोड पोस्ट कर सकता हूं, इसे पहले यहां तैयार करने की आवश्यकता होगी। लेकिन एक अच्छा ट्यूटोरियल भी मेरी मदद करेगा।

धन्यवाद।

उत्तर

0

getChildView (में एक कस्टम expandableListView उपयोग करने का प्रयास)

class YourCustomExpandableListView extends ExpandableListView { 
    public YourCustomExpandableListView (Context context) { 
     super(context);  
    } 

    protected void onMeasure(int width, int height) { 
     /* 
     * Adjust height 
     */ 
     height = MeasureSpec.makeMeasureSpec(500, MeasureSpec.AT_MOST); 
     super.onMeasure(width, height); 
    } 
} 

एक नज़र here

इसके अलावा एक पूर्ण समाधान पाया जा सकता है here

+0

समस्या 'का सही मूल्य मिल रहा है है 500'। मैंने इस तरह के कुछ जटिल प्रयास किए हैं (सफलता के बिना): 'टाइपेड वैल्यू मान = नया टाइपेड वैल्यू(); प्रदर्शन मेट्रिक्स मेट्रिक्स = नया प्रदर्शन मेट्रिक्स(); context.getTheme()। ResolAttribute (android.R.attr.listPreferredItemHeight, मान, सत्य); ((विंडोमेनगर) (context.getSystemService (Context.WINDOW_SERVICE)) .getDefaultDisplay()। GetMetrics (मीट्रिक) प्राप्त करें; int cellHeight = (int) TypedValue.complexToDimension (value.data, मीट्रिक); int rootItemsChildrenCount = getChildrenCount (groupPosition); वापसी सेलहेइट * rootItemsChildrenCount; ' – Ich

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