2010-12-07 12 views
37

में "कन्वर्ट व्यू" पैरामीटर क्या है? क्या कोई मुझे बता सकता है कि convertView पैरामीटर getView()Adapter कक्षा की विधि में क्या उपयोग किया जाता है?ArrayAdapter getView() विधि

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View v = convertView; 
    if (v == null) { 
     LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = vi.inflate(R.layout.row, null); 
    } 
    Order o = items.get(position); 
    if (o != null) { 
     TextView tt = (TextView) v.findViewById(R.id.toptext); 
     TextView bt = (TextView) v.findViewById(R.id.bottomtext); 
     if (tt != null) { 
      tt.setText("Name: "+o.getOrderName());       } 
     if(bt != null){ 
      bt.setText("Status: "+ o.getOrderStatus()); 
     } 
    } 
    return v; 
} 

हम convertView के माध्यम से क्या पारित करना चाहिए:

यहाँ here से एक नमूना कोड ले रहा है?

मैं क्या पाया है, take from here:

कि डेटा सेट में निर्दिष्ट स्थान पर डेटा प्रदर्शित करता है एक दृश्य प्राप्त करें। आप या तो मैन्युअल रूप से व्यू बना सकते हैं या इसे XML लेआउट फ़ाइल से बढ़ा सकते हैं। जब दृश्य फुलाया जाता है, तो मूल दृश्य (ग्रिड व्यू, ListView ...) डिफ़ॉल्ट लेआउट पैरामीटर लागू नहीं करेगा जब तक कि आप रूट दृश्य निर्दिष्ट करने के लिए फुलाएं (int, android.view.ViewGroup, बूलियन) का उपयोग करें और अनुलग्नक को रोकने के लिए जड़।

पैरामीटर

स्थिति - अनुकूलक के डेटा आइटम जिसकी दृश्य हम चाहते हैं का सेट के भीतर आइटम की स्थिति।

कन्वर्ट व्यू - यदि संभव हो तो पुन: उपयोग करने का पुराना दृश्य। नोट: आपको यह जांचना चाहिए कि यह दृश्य का उपयोग कर गैर-शून्य और उचित प्रकार का है। यदि सही डेटा प्रदर्शित करने के लिए इस दृश्य को परिवर्तित करना संभव नहीं है, तो यह विधि एक नया दृश्य बना सकती है।

माता पिता - माता-पिता है, यह दृश्य अंततः रिटर्न

रिटर्न के साथ संलग्न किया जाएगा - निर्दिष्ट स्थान पर डेटा के लिए इसी एक दृश्य।

उत्तर

38

आपको उस विधि को स्वयं से कॉल नहीं करना चाहिए।

एंड्रॉइड का ListViewViews के साथ स्वयं को भरने के लिए Adapter का उपयोग करता है। जब ListView दिखाया गया है, तो यह खुद को पॉप्युलेट करने के लिए getView() पर कॉल करना शुरू कर देता है। जब उपयोगकर्ता एक नया दृश्य स्क्रॉल करता है, तो प्रदर्शन के लिए ListViewAdapter को पुराना दृश्य भेजता है कि इसका उपयोग convertView परम में और नहीं किया जाता है।

+1

मुझे यह समझ में नहीं आया कि "जब उपयोगकर्ता एक नया दृश्य स्क्रॉल करता है, तो प्रदर्शन के लिए सूची दृश्य एडाप्टर को पुराना दृश्य भेजता है कि इसे कन्वर्ट व्यू पैरा में और अधिक उपयोग नहीं किया जाता है।" आप कहते हैं कि 'ListView' एक ही समय में सभी विचारों को पॉप्युलेट नहीं करता है? – Tarik

+1

@ ब्रेवार्ड: नहीं। कल्पना करें कि 'ListView' में 1.000 आइटम होंगे। यह सब कुछ स्मृति में लोड नहीं कर सकता है और यह स्क्रीन में दिखाने के लिए न्यूनतम राशि का उपयोग करें। – Macarse

+12

इसका एक महत्वपूर्ण साइड इफेक्ट यह है कि किसी सूची दृश्य के लिए दृश्यों में किसी भी राज्य की जानकारी संग्रहीत करना आपदा हो सकता है। सुनिश्चित करें कि आप एडाप्टर में किसी भी प्रति-आइटम स्थिति को स्टोर में नहीं रखते हैं। – jjb

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