मैं expandableChildView घटक के एक childView को बढ़ाना चाहता हूँ।
कोड:
सार्वजनिक देखें getChildView (int groupPosition, int childposition, boolean isLastChild, कन्वर्टव्यू देखें, ViewGroup पैरेंट) {देखें v = convertView; LinearLayout linearOpt = themesOptions.get (childposition); अगर (वी == रिक्त) {v = mInflater.inflate (आर। लेट। एटम, रिक्त); } LinearLayout ll = (LinearLayout) v.findViewById (R.id.root); ll.addView (linearOpt); वापसी वी; } जहां रैखिक ओपन एक वेक्टर है जिसमें बहुत सी रैखिक लेआउट ऑब्जेक्ट्स हैं जो मैंने इन्स्टिटिअएट किए हैं।
निजी शून्य तैयार थीम्स () {देखें v = minflater फुलाएँ (आर.लेआउट.विंडेट_ कॉन्फ़िगर, नल); LinearLayout थीम = (LinearLayout) v.findViewById (R.id.themeLayout); LinearLayout रंग = (LinearLayout) v.findViewById (R.id.colorLayout); LinearLayout trans = (LinearLayout) v.findViewById (R.id.transpLayout); themesOptions.add (विषय); themesOptions.add (रंग); themesOptions.add (ट्रांस); } यह R.layout.itemrow xml है:
लेकिन मुझे यह त्रुटि मिली:
07-18 10: 48: 49.740: त्रुटि / एंड्रॉइड रेंटाइम (2738): java.lang.IllegalStateException: निर्दिष्ट बच्चे के पास पहले से ही एक माता पिता है
मैं इस मुद्दे को कैसे हल कर सकता हूं?
मुझे लगता है कि इस समस्या के कारण आप readyThemes () में लेआउट तैयार करते हैं।
आपने इसका उल्लेख नहीं किया, लेकिन मुझे लगता है आपका 'लेआउट / विजेट_configure.xml' इस तरह की संरचना को परिभाषित करता है:?
& lt; LinearLayout एंड्रॉइड: id = "@ + id / root" & gt; & Lt; LinearLayout एंड्रॉइड: id = "@ + id / themeLayout & gt; & lt;! - ... - & gt; & lt; / LinearLayout & gt; & lt; LinearLayout एंड्रॉइड: id =" @ + id / colorLayout & gt; & Lt;! - ... - & gt; & Lt; / LinearLayout & gt; & Lt; LinearLayout एंड्रॉइड: id = "@ + id / transpallayout & gt; & lt;! - ... - & gt; & lt; / LinearLayout & gt; & lt; / LinearLayout & gt; तब आप फुलाएं यह 3 उप लेआउट प्राप्त करने के लिए prepareThemes () में है, लेकिन इस समय वे पहले से ही आसपास के लेआउट के बच्चों के रूप में पंजीकृत हैं (जिसे मैंने "रूट" कहा है)। जैसा कि त्रुटि का अर्थ है उदाहरण केवल एक अभिभावक में जोड़ा जा सकता है ।
आप अपनी प्रत्येक एक्सएमएल फ़ाइल में प्रत्येक रैखिक लेआउट को स्टोर कर सकते हैं और फिर 3 गुना बढ़ सकते हैं। उन संग्रहित लेआउटों को एक बच्चे के लिए ठीक एक बार जोड़ा जा सकता है।
मुझे यकीन नहीं है कि आप क्या करना चाहते हैं, लेकिन मुझे लगता होगा, यह बेहतर होगा - तैयारी के बजाय - सिर्फ 3 अलग-अलग लेआउट्स के लिए जिसमें layout.itemrow < / कोड> और फिर बस एक स्विच केस में getChildView () बनाएं और उड़ने पर आवश्यक लेआउट बढ़ाएं। क्योंकि जब भी आप तैयार नहीं करते हैं, जैसे ही आपके पास एक समूह है उतना ही एक समूह आपको मिल जाएगा एसडी ग्रुप के बच्चे को एक प्रस्तुति वाला लेआउट जोड़ने में त्रुटि।
मुझे उम्मीद है कि यह मददगार होगा।
Comments
Post a Comment