2012-04-22 11 views
11

मैंने अपना स्वयं का कस्टम एडेप्टर बेसएडाप्टर से एक सूचीदृश्य दिखाने के लिए बढ़ाया है और इस तरह ...एंड्रॉइड: स्थिर आईडी के साथ एडाप्टर कैसे बनाएं?

मैं इसे एकल और बहु ​​चयन का समर्थन करना चाहता हूं, इसलिए इसमें स्थिर आईडी होनी चाहिए। मैंने ADAPTER.hasStableIds() के साथ जांच की है और परिणाम गलत है।

मैंने इस विधि को ओवरराइड किया है ताकि कोई भाग्य के साथ स्थिरता आईडी प्राप्त करने का प्रयास न किया जा सके।

public long getItemId(int position) { 
    return (long) getItem(position).hashCode(); 
} 

कोई विचार यह कैसे बनाना है? धन्यवाद!

उत्तर

18

अवहेलना hasStableIds सच लौटने के लिए।

इसके अलावा आपके एडाप्टर पर डेटा hashCode() को ओवरराइड करना चाहिए या getItemId पर किसी प्रकार का आईडी फ़ील्ड लौटाया जाना चाहिए।

+1

वाह, सरल और आसान समाधान। धन्यवाद! – giorgiline

+5

हैशकोड अद्वितीय नहीं हैं और डिफ़ॉल्ट कार्यान्वयन आईडी के रूप में स्थिति का उपयोग करता है। हैशकोड आइटम पहचानकर्ताओं से कैसे संबंधित है? –

+0

@ पीटर: जो मैंने समझा "स्थिर आईडी" का अर्थ है कि आप हमेशा एक अद्वितीय संख्या का उपयोग करके अपनी वस्तुओं/पंक्तियों की पहचान करने में सक्षम होते हैं (उर्फ आईडी आपके एडाप्टर के जीवन चक्र के दौरान कभी नहीं बदलते हैं)। इसलिए, उसी तरह आपको हैश मैप के लिए हैशकोड को अनन्य/नहीं करना चाहिए, आप अपने एडाप्टर में हैशकोड का पुन: उपयोग कर सकते हैं। –

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