2013-08-02 4 views
6
  • मुझे हमेशा अस्पष्टता है कि हमें एंड्रॉइड में inflater का उपयोग करने की आवश्यकता क्यों है, क्यों वे कस्टम लेआउट (जैसे नीचे) के लिए ListView में उपयोग किए जाते हैं?
  • इन्फ्लेटर क्या है?
  • इन्फ्लेटर का उपयोग करने का क्या फायदा है?

public class MobileArrayAdapter extends ArrayAdapter<String> { 
    private final Context context; 
    private final String[] values; 


public MobileArrayAdapter(Context context, String[] values) { 
    super(context, R.layout.list_mobile, values); 
    this.context = context; 
    this.values = values; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) context 
     .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    View rowView = inflater.inflate(R.layout.list_mobile, parent, false); 
    TextView textView = (TextView) rowView.findViewById(R.id.label); 
    ImageView imageView = (ImageView) rowView.findViewById(R.id.logo); 
    textView.setText(values[position]); 

धन्यवाद,सूचीदृश्य में इन्फ्लोटर का उपयोग क्यों करें

उत्तर

13

इन्फ्लेटर क्या है?

संक्षेप में क्या LayoutInflater Documentation कहते हैं ... एक LayoutInflater एंड्रॉयड सिस्टम सेवा है कि अपने एक्सएमएल फाइल है कि एक लेआउट को परिभाषित लेने, और उन्हें View वस्तुओं में परिवर्तित करने के लिए जिम्मेदार है में से एक है। ओएस फिर स्क्रीन को आकर्षित करने के लिए इन दृश्य वस्तुओं का उपयोग करता है।

मैं हमेशा क्यों हम एंड्रॉयड में inflater उपयोग करने की आवश्यकता पर अस्पष्टता था, क्यों वे एक कस्टम लेआउट के लिए एंड्रॉयड ListView में किया जाता है?

आमतौर पर, आपको कभी भी लेआउट इनफ्लेटर का उपयोग करने की आवश्यकता नहीं होती है। जब आप अपनी गतिविधि की विधि में setContentView() पर कॉल करते हैं तो एंड्रॉइड आपके लिए अधिकांश लेआउट मुद्रास्फीति करता है।तो आप प्रोग्रामर के रूप में, यह सुनिश्चित करने के लिए ज़िम्मेदार हैं कि विचार बढ़ाए गए हैं। अब आप ListView के संदर्भ में विचारों को फुला देना चाहते हैं। यदि आप प्रत्येक आइटम को कस्टमाइज़ नहीं करना चाहते हैं तो एडाप्टर क्लास मुद्रास्फीति आपके लिए कर सकती है। लेकिन यदि आप किसी सूची में दिखाए गए विचारों को कस्टमाइज़ करना चाहते हैं, तो आपको लेआउट इन्फ्लेटर के साथ मैन्युअल रूप से प्रत्येक दृश्य को फुला देना होगा, क्योंकि कोई अन्य मौजूदा विधि नहीं है जिसका आप उपयोग कर सकते हैं।

इन्फ्लेटर का उपयोग करने का क्या फायदा है?

इसका उपयोग करने का कोई फायदा नहीं है। आपको अपने स्थिर एक्सएमएल लेआउट को बढ़ाने के लिए कुछ आकार या रूप में लेआउट इनफ्लेटर का उपयोग करना आवश्यक है।

वैकल्पिक रूप से, आप जावा कोड के साथ गतिशील रूप से दृश्य बना सकते हैं। हालांकि, आपको प्रत्येक संपत्ति को हाथ से देखने के लिए विधियों को कॉल करने की आवश्यकता होगी। मेरी राय में, एक्सएमएल/मुद्रास्फीति प्रक्रिया का उपयोग करना आसान है। इसके अलावा, एंड्रॉइड बिल्डिंग समय पर आपकी एक्सएमएल फाइलों को प्री-प्रोसेस करता है, इसलिए इसका परिणाम तेजी से निष्पादन समय होता है।

+0

"कोई फायदा नहीं है। आपको कुछ तरीकों से अपने विचारों को बढ़ाने की आवश्यकता है" यह कथन स्पष्ट रूप से गलत है, आप हमेशा कोड –

+0

में विचार बना सकते हैं मुझे स्पष्टीकरण देने दें .. संपादन देखें। – Joel

+0

सवाल "इन्फ्लेटर का उपयोग करने का क्या फायदा है?" मेरे लिए अनुवाद करता है "कोड में विचार बनाने वाले इन्फ्लैटर बनाम का उपयोग करने का क्या फायदा है?"। आपका उत्तर "इसका उपयोग करने का कोई फायदा नहीं है [...]" गलत होगा अगर यह "विस्तारित" प्रश्न का उत्तर दे रहा है। –

3

मैं हमेशा क्यों एंड्रॉयड में inflater उपयोग करने के लिए सुबह की आवश्यकता पर अस्पष्टता था, क्यों वे एक कस्टम लेआउट के लिए एंड्रॉयड ListView में किया जाता है?
इनका उपयोग प्रत्येक पंक्ति के लिए दृश्य बनाने के लिए किया जाता है।

इन्फ्लेटर क्या है?
एक सिस्टम सेवा जो एक्सएमएल लेआउट से बाहर निकलती है।

नीचे दिए गए कोड में मैं समझने की कोशिश कर रहा हूं कि इन्फ्लेटर का उपयोग क्यों किया जाता है?
inflater का उपयोग पंक्तियों के दृश्य बनाने के लिए किया जाता है।

इन्फ्लेटर का उपयोग करने का क्या फायदा है?
क्या तुलना में? आप XML लेआउट से दृश्य कैसे बनाना चाहते हैं?

+0

तो सूची सूची के लिए पंक्तियों के लिए विचार बनाना केवल इन्फ्लेटर का उपयोग करना संभव है? –

+1

या तो एक्सएमएल लेआउट से एक inflater के साथ, या 'नए दृश्य() 'के साथ प्रोग्रामेटिक रूप से। ज्यादातर मामलों में आप शायद एक एक्सएमएल लेआउट का उपयोग करना चाहते हैं। – SimonSays

0

बस रखो, एक inflater आपको संसाधन लेआउट फ़ाइल से एक दृश्य बनाने की अनुमति देता है ताकि आपको प्रोग्रामेटिक रूप से सब कुछ बनाने की आवश्यकता न हो।

आपके उदाहरण में, आप R.layout.list_mobile लेआउट को बढ़ाते हैं। यह आपको इसके भीतर के सभी विचारों तक पहुंचने देता है। उदाहरण के लिए, आप तो कहते हैं:

TextView textView = (TextView) rowView.findViewById(R.id.label); 

rowView.findViewById() बुला कर आप विचारों कि लेआउट के भीतर बनाए जाते उपयोग करने में सक्षम हैं। अक्सर सूची दृश्यों के लिए आपके पास एक पंक्ति एक्सएमएल फ़ाइल होगी जो आप तब बढ़ाएंगे और अपने डेटा को विचारों में डाल दें।

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