खैर, ऐसा लगता है कि इस सवाल का जवाब सरल और अधिक सरल तरीके से दिया जा सकता है ... :-)
सीधे शब्दों में कहें, एंड्रॉइड आपको longकिसी भी ListViewआइटम को संलग्न करने की अनुमति देता है , यह इतना आसान है। जब सिस्टम आपको उपयोगकर्ता चयन के बारे में सूचित करता है, तो आपको यह बताने के लिए तीन पहचान चर मिलते हैं कि क्या चुना गया था:
- खुद को देखने के लिए एक संदर्भ,
- सूची में इसकी संख्यात्मक स्थिति,
- यह
longआप व्यक्तिगत तत्वों से जुड़ा हुआ है।
यह आपको तय करना है कि इन तीनों में से कौन सा आपके लिए अपने विशेष मामले में संभालना सबसे आसान है, लेकिन आपके पास हर समय चुनने के लिए तीनों हैं। इसे longएक टैग के रूप में आइटम से स्वचालित रूप से जुड़ा हुआ समझें, केवल यह कि यह और भी सरल और आसानी से पढ़ने के लिए आसान है।
आम तौर पर एक साधारण सम्मेलन से उपजी इस बारे में गलतफहमी। सभी एडेप्टर को एक प्रदान करना होगा, getItemId()भले ही वे वास्तव में इस तीसरी पहचान का उपयोग न करें। इसलिए, कन्वेंशन द्वारा, उन एडेप्टर (एसडीके या वेब के चारों ओर नमूनों में कई सहित) बस positionएक ही कारण से लौटते हैं : यह हमेशा अद्वितीय होता है। फिर भी, यदि कोई एडाप्टर लौटाता है, तो positionइसका वास्तव में मतलब है कि वह इस सुविधा का उपयोग नहीं करना चाहता है, क्योंकि positionपहले से ही ज्ञात है, वैसे भी।
इसलिए, यदि आपको किसी अन्य मूल्य को वापस करने की आवश्यकता है जिसे आप फिट देखते हैं, तो ऐसा करने के लिए स्वतंत्र महसूस करें:
@Override
public long getItemId(int position) {
return data.get(position).Id;
}
getItemId()मेंArrayAdapter()हमेशा रिटर्न-1के साथassert false : "TODO"; return -1;