तो, मैं इस वीडियो को देख रहा हूं http://www.youtube.com/watch?v=N6YdwzAvwOA और रोमेन गाय दिखा रहा है कि getView()
विधि का उपयोग करके अधिक कुशल UI एडाप्टर कोड कैसे बनाएं। क्या यह कर्सर एडाप्टर पर भी लागू होता है? मैं वर्तमान में अपने कस्टम कर्सर एडेप्टर के लिए bindView()
और newView()
का उपयोग कर रहा हूं। क्या मुझे इसके बजाय getView का उपयोग करना चाहिए?GetView बनाम। एक कस्टम कर्सर एडाप्टर में BindView?
उत्तर
CursorAdapter
getView()
का कार्यान्वयन और इस तरह से newView()
और bindView()
, प्रतिनिधियों पंक्ति रीसाइक्लिंग पैटर्न लागू करता है के रूप में है। इसलिए, यदि आप newView()
और bindView()
ओवरराइड कर रहे हैं तो आपको पंक्ति रीसाइक्लिंग के लिए CursorAdapter
के साथ कुछ भी विशेष करने की आवश्यकता नहीं है।
/**
* @see android.widget.ListAdapter#getView(int, View, ViewGroup)
*/
public View getView(int position, View convertView, ViewGroup parent) {
if (!mDataValid) {
throw new IllegalStateException("this should only be called when the cursor is valid");
}
if (!mCursor.moveToPosition(position)) {
throw new IllegalStateException("couldn't move cursor to position " + position);
}
View v;
if (convertView == null) {
v = newView(mContext, mCursor, parent);
} else {
v = convertView;
}
bindView(v, mContext, mCursor);
return v;
}
यह कर्सर एडाप्टर स्रोत कोड, स्पष्ट रूप से कर्सर एडाप्टर अधिक काम करता है।
CursorAdapter
कार्यान्वयन BaseAdapter
की तरह उप-classing नियमित एडेप्टर से अलग है, आप ओवरराइड करने के लिए getView()
, getCount()
, getItemId()
क्योंकि उस जानकारी कर्सर से ही प्राप्त किया जा सकता है की जरूरत नहीं है।
एक Cursor
को देखते हुए, आप केवल एक CursorAdapter
उपवर्ग बनाने के लिए दो तरीकों ओवरराइड करने के लिए की जरूरत है:, लेकिन इस विचार को देखते हुए प्रदान की कर्सर में डेटा प्रदर्शित करने के लिए अद्यतन:
bindView()
।
newView()
: इसे सूची में जाने वाले एक नए दृश्य को तैयार करने के लिए कहा जाता है।
CursorAdapter
रीसाइक्लिंग विचारों का ख्याल रखेगा (getView()
नियमित Adapter
पर विधि के विपरीत)। यह प्रत्येक बार एक नई पंक्ति की आवश्यकता होने पर newView()
पर कॉल नहीं करता है। यदि उसके पास पहले से View
है (null
नहीं), तो यह सीधे bindView()
पर कॉल करेगा, इस तरह, निर्मित दृश्य का पुन: उपयोग किया जाता है। इन दो तरीकों से प्रत्येक दृश्य की सृजन और आबादी को विभाजित करके, CursorAdapter
नियमित रूप से एडाप्टर में, जहां इन दोनों चीजें getView()
विधि में की गई हैं, पुन: उपयोग को प्राप्त करती है।
धन्यवाद, बहुत उपयोगी। – LarsH
- 1. SimpleCursorAdapter बनाम कर्सर एडाप्टर?
- 2. कस्टम कर्सर एडैप्टर getView()
- 3. कस्टम एडाप्टर में NullPointerException getView
- 4. कस्टम सरल कर्सर एडाप्टर
- 5. कस्टम कर्सर एडाप्टर
- 6. कर्सर एडाप्टर बनाम संसाधन कर्सर एडाप्टर
- 7. एक कर्सर एडाप्टर
- 8. एंड्रॉइड एडाप्टर एकाधिक getView
- 9. एक कर्सर एडाप्टर
- 10. कर्सर एडाप्टर
- 11. कस्टम एडाप्टर
- 12. कस्टम एडाप्टर
- 13. व्यूफ्लिपर बनाम एडाप्टर व्यूफ्लिपर
- 14. कर्सर एडाप्टर एंड्रॉइड
- 15. SimpleCursorAdapter और कर्सर एडाप्टर
- 16. एंड्रॉइड में ऐरे एडाप्टर और कर्सर एडाप्टर के बीच अंतर
- 17. कस्टम एडाप्टर और सूचीदृश्य
- 18. कस्टम एडाप्टर
- 19. कर्सर एडाप्टर बनाम ArrayAdapter सूची सूची के लिए
- 20. GetView
- 21. OnItemSlectedListener एक फ्रैगमेंट में जो कस्टम एडाप्टर
- 22. बचाने एंड्रॉयड चेकबॉक्स राज्य कर्सर एडाप्टर
- 23. एंड्रॉइड में ग्रिडव्यू के लिए कस्टम एडाप्टर
- 24. क्या यह कस्टम कर्सर एडाप्टर एक सूची दृश्य के लिए ठीक से एंड्रॉइड के लिए कोड किया गया है?
- 25. कस्टम एडाप्टर के साथ वर्णमाला इंडेक्सर
- 26. अपना स्वयं का कस्टम एडाप्टर बनाते समय getView() विधि कैसे काम करती है?
- 27. ग्रिडव्यू एडाप्टर में, लोडव्यू
- 28. कस्टम एडाप्टर के साथ ListView, तत्वों को एक करके
- 29. एडाप्टर
- 30. क्या कर्सर एडाप्टर का उपयोग करना है?
मैं व्यूहोल्डर पैटर्न कैसे लागू करूं? क्या मैं इसे newView() और bindView() के बीच विभाजित करूंगा? –
@Scienceprodigy: 'newView() 'में, आप पंक्ति के लिए' ViewHolder' बनायेंगे और इसे 'setTag()' से संबद्ध करेंगे। 'BindView() 'में, आप' GetHager '' के माध्यम से' ViewHolder' पुनर्प्राप्त करेंगे। – CommonsWare
धन्यवाद, यह काम करता है। हालांकि मुझे विचारों के रीसाइक्लिंग के साथ कुछ परेशानी हो रही है, क्योंकि मेरे पास सूची आइटम हैं जिनके पास एक शीर्षलेख है जो डिफ़ॉल्ट रूप से चला गया है, जिसे मैं दिनांकित अनुभाग प्रदर्शित करने के लिए उपयोग करता हूं। जब तक मैं सूची को ऊपर या नीचे नहीं डालता तब तक सब कुछ ठीक दिखाई देता है, फिर शीर्षलेख दिखाते हैं कि उन्हें नहीं होना चाहिए। –