2012-03-29 12 views
5

मेरे पास ListView है जो BaseAdapter के उप-वर्ग का उपयोग करता है। एडाप्टर आइटम इंडेक्स (पदों) को आईडी के रूप में उपयोग करता है और इस प्रकार आईडी स्थिर नहीं होते हैं (अंतर्निहित डेटा पर संचालन में से एक दो डेटा आइटम्स के बीच स्वैपिंग कर रहा है)।बेसएडाप्टर: setStableIds() को झूठी सेट करें?

क्या मुझे अपने एडाप्टर hasStableIds() से return false में ओवरराइड करने की आवश्यकता है?

BaseAdapter यहाँ को देखते हुए सुझाव है

कि झूठी डिफ़ॉल्ट

है।

http://www.netmite.com/android/mydroid/frameworks/base/core/java/android/widget/BaseAdapter.java

// Is this required? Isn't this the default? 
@Override 
public final boolean hasStableIds() { 
    return false; 
} 

@Override 
public final long getItemId(int position) { 
    return position; 
} 

उत्तर

4

नहीं, तुम hasStableIds() ओवरराइड करने के लिए यदि आप डिफ़ॉल्ट व्यवहार है क्योंकि इसके एक डिफ़ॉल्ट कार्यान्वयन प्रदान करने के लिए Adapter इंटरफ़ेस का एक तरीका है जिसके BaseAdapterListAdapter और SpinnerAdapter के माध्यम से लागू करता है और इसलिए है चाहता हूँ की जरूरत नहीं है उस।

हालांकि आपको getItemId(int position) ओवरराइड करने की आवश्यकता है क्योंकि यह बेसएडाप्टर क्लास का एक सार तरीका है।

+1

getItemId के लिए आपको क्या वापस जाना चाहिए? –

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