ฉันเห็นวิธีการเหล่านี้เป็นวิธีที่สะอาดกว่าในการเข้าถึงข้อมูลรายการของฉัน แทนโดยตรงของการเข้าถึงวัตถุอะแดปเตอร์ของฉันผ่านทางบางอย่างเช่นฉันก็สามารถเรียกเช่นอะแดปเตอร์myListData.get(position)
adapter.get(position)
getItemId
เดียวกันจะไปสำหรับ โดยปกติฉันจะใช้วิธีนี้เมื่อฉันต้องการที่จะดำเนินการบางอย่างขึ้นอยู่กับ ID ที่ไม่ซ้ำกันของวัตถุในรายการ สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อทำงานกับฐานข้อมูล ที่ส่งคืนid
อาจเป็นการอ้างอิงถึงวัตถุในฐานข้อมูลซึ่งฉันสามารถดำเนินการที่แตกต่างกันใน (update / delete / etc)
ดังนั้นแทนที่จะเข้าถึง ID จากวัตถุข้อมูลดิบอย่างที่myListData.get(position).getId()
คุณสามารถadapter.getItemId(position)
ใช้ได้
ตัวอย่างหนึ่งของการที่ฉันรู้สึกเหมือนฉันจำเป็นต้องใช้วิธีการเหล่านี้อยู่ในโครงการโดยใช้SeparatedListViewAdapter อะแดปเตอร์นี้สามารถมีอะแดปเตอร์หลายประเภทแต่ละตัวแทนข้อมูลที่เป็นประเภทที่แตกต่างกัน (โดยทั่วไป) เมื่อโทรgetItem(position)
บนSeparatedListViewAdapter
วัตถุที่ส่งกลับอาจจะแตกต่างกันขึ้นอยู่กับที่ "ส่วนตำแหน่ง" คือการที่คุณส่ง
ตัวอย่างเช่นหากคุณมี 2 ส่วนในรายการของคุณ (ผลไม้และขนม): หากคุณใช้getItem(position)
และposition
เกิดขึ้นกับรายการในส่วนผลไม้คุณจะได้รับวัตถุที่แตกต่างจากที่คุณร้องขอgetItem(position)
โดยposition
ชี้ไปที่รายการในลูกอมมาตรา. จากนั้นคุณอาจคืนค่า ID คงgetItemId(position)
ที่ซึ่งแสดงถึงชนิดของข้อมูลที่getItem(position)
ส่งคืนหรือใช้instanceof
เพื่อกำหนดวัตถุที่คุณมี
นอกเหนือจากที่ฉันพูดไปฉันไม่เคยรู้สึกเหมือนฉันต้องการใช้วิธีการเหล่านี้จริงๆ
getItemId()
ในArrayAdapter()
เสมอกลับมา-1
พร้อมกับassert false : "TODO"; return -1;