एक प्रसंग को देखते हुए लेआउट इन्फ्लेटर कैसे प्राप्त करें?


226

मैं एक ListAdapter के एक कस्टम कार्यान्वयन लिख रहा हूँ।

इसके निर्माता में, मैं एक संदर्भ में ले रहा हूं, एक संसाधन आईडी (यानी लेआउट फ़ाइल का प्रतिनिधित्व करने वाला R.id.xxx), और एक सूची और एक नक्शा (इनमें डेटा होता है)।

अब, समस्या यह है कि मुझे व्यू ऑब्जेक्ट प्राप्त करने के लिए LayoutInflater की आवश्यकता होगी जो अलग लेआउट XML फ़ाइल में है।

मैं लेआउट को कैसे प्राप्त कर सकता हूँ।

अब, मुझे क्यों लगता है कि यह संभव है, क्या यह काफी हद तक एक ArrayAdapter (संदर्भ, संसाधन, textViewResourceId, डेटा ऐरे) के निर्माता के पास जा रहा है, और मुझे लगता है कि ArrayAdapter को भी इसका उपयोग करना है LayoutInflater ने केवल एक संदर्भ दिया।

लेकिन यह कैसे किया जा सकता है?

जवाबों:


515

आप कक्षा static from()से विधि काLayoutInflater उपयोग कर सकते हैं :

 LayoutInflater li = LayoutInflater.from(context);

11
धन्यवाद! मैं Context.getSomething ()। getAnotherThing () पाने के लिए कोशिश कर रहा था। getLayoutInflater ()!
एडविन ली

यह एकमात्र तरीका है जो मेरे लिए काम करता है। मैंने अब तक कोशिश की है कि हर दूसरे एक अपवाद फेंक दिया।
अंक 1

4
क्या हर बार जरूरत पड़ने पर इनफ्लो मिलना महंगा है, मतलब, क्या आपको लगता है कि हमें इनफ्लेटर के एक सदस्य को बचाना चाहिए?
एलिकएल्ज़िन-किलाका

BTW मुझे लगता है कि हमें LayoutInflater li = (LayoutInflater) सन्दर्भ का उपयोग करना चाहिए।
अंकुर चौधरी

3
कौन सा बेहतर है ?? एक 270 वोटों वाला या एक 25+ वोटों वाला
डीजेफनी

53

आप इस कोड का उपयोग LayoutInflater प्राप्त करने के लिए भी कर सकते हैं:

LayoutInflater li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)

40
LayoutInflater.from (संदर्भ ctx) और इस getSustemService (...) के बीच क्या अंतर है?
Teo Choong Ping

8
+1, अच्छे प्रश्न के लिए, पद्धति के कार्यान्वयन में LayoutInflater.from (संदर्भ) को भी system.getSystemService () से कहते हैं। तो कॉल स्टैक में कूड़े का अंतर हो सकता है।
गुयेनडैट

11
LayoutInflater.from (संदर्भ) में भी त्रुटि आती है, यदि फ़्लोटर को फिर से प्राप्त नहीं किया जा सकता है: यहाँ कोड: सार्वजनिक स्थैतिक LayoutInflater (संदर्भ संदर्भ) {LayoutInflater LayoutInflater = (LayoutInflater) संदर्भ: .getSystemService (Context.LAYOUT_INFLATER_SERVICE); if (LayoutInflater == null) {नया जोर फेंकना है ("LayoutInflater नहीं मिला है।"); } रिटर्न लेआउटइन्फ्लैटर; }
एचआईपी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.