ঠিক আছে, দেখে মনে হচ্ছে এই প্রশ্নের উত্তর সহজ এবং আরও সহজভাবে দেওয়া যেতে পারে ... :-)
সহজ কথায় বলতে গেলে, অ্যান্ড্রয়েড আপনাকে 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;