作者alderis (alderis)
看板AndroidDev
标题Re: [问题] SimpleListAdapter中的itemid与positio …
时间Fri Sep 16 00:23:14 2011
我自问自答一下
这边是上次问的问题
※ 引述《alderis (alderis)》之铭言:
: 我在ListActivity中使用SimpleListAdapter
: ListActivity中有
: onListItemClick(ListView l, View v, int position, long id)
: 可以直接使用
: 但我比较不明白其中的参数positon与id有什麽差别
: 我试过position是从0开始
: id是从1开始
: 而id似乎是从设定的Adapter那边过来的
: 因为设好的adapter中有getItemId这个method
: 但我还是不太明白当初id是怎麽来的
: 如果是自动产生的话,那id跟position的用途有什麽不一样呢?
: 谢谢
这边所得到的id并不是从1开始的连续数列
而是塞入adapter的cursor中的SQL中之真实id
我作了个实验,把SQL中的id不从1开始,而使用时间乱码
在onListItemClick中的id参数会给出我选的那个Item的真实id
所以问题来了,为什麽SimpleCursorAdapter会知道item在sql中的id是多少呢?
我仔细观察才发现,原来我之前使用时
刚好都有把SQL table中的_id项目放入cursor中
後来有一次没有把_id这个项目放入时,就出现错误了
并在把cursor塞入SimpleCursorAdapter时被告知cursor中没有_id这个项目
所以_id这个项目是塞入SimpleCursorAdapter中的cursor的必备项目
因而会给出真实的id值
以上,我是做实验+推论出来的结果
并没有查证SimpleCursorAdapter的原始码
如有错误请告知纠正
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.240.210.26
1F:推 tomap41017:你的推论是正确的,我之前的推文就有告知 09/16 12:02
2F:→ tomap41017:CursorAdap系列的都慧要求_id 09/16 12:02
3F:→ alderis:楼上谢啦 09/17 11:06