作者notcorn (玉米)
看板AndroidDev
标题[问题] 关於ListView+Sqlite的配合
时间Tue Aug 9 11:02:05 2011
你们好,我想请问各位大大
我有实作一个ListView读取本身sql的资料,运作正常(可以新增)
然後我做了一个长按选单ContextMenu(上面有一个删除选项)
问题在删除方面,
在实作public boolean onContextItemSelected(MenuItem item)这个之下
加入了info以方便取得该item的资料
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
而info.Id跟info.position应该都是指画面上的第几个项目(不知有没有错)
而Sqlite里面的primary key是会一直增加的,
例如先新增了四笔,1.2.3.4
砍了第二笔,再加一笔新的会变成1.3.4.5
因为我是用info.Id去做db.query
但这样我没办法用info取得的资料来对sql做修改,因为数字不对
还是info可以取得该item上面的字串?
可以的话就可以用该字串下去做query了
谢谢各位大大耐心观看,谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.42.201.141
1F:→ jimwayne123:个人的作法是select的时候自己把id存一个阵列 08/09 12:37
2F:→ jimwayne123:新增删除时同时对id的阵列做新增删除,来确保对应都是 08/09 12:38
3F:→ jimwayne123:正确的...不过也许有更聪明的方法吧~ 08/09 12:38
4F:→ notcorn:你好,这个方法我也有想过,只是考虑到资料太多是会占用空 08/09 13:03
5F:→ notcorn:间还是花时间存阵列,所以才想说有没有更直接的方法, 08/09 13:03
6F:→ notcorn:不过,还是谢谢你花时间 08/09 13:05
7F:推 chiwa:db我不是很熟悉,不过应该有方法用info.Id当primary key吧? 08/10 08:02
8F:推 tomap41017:就是用info.id呀!!原PO想太多了 08/10 18:16
9F:→ tomap41017:info.id就是对应到该笔sql的_id,所以用它去增删即可 08/10 18:16
10F:→ notcorn:T大不好意思,id是0.1.2,用info.id下去删除後,再显示却 08/10 22:44
11F:→ notcorn:是0.1而不是0.2这样(删除了1这笔),会是我哪里写错吗?谢谢 08/10 22:45
12F:→ tomap41017:info.id是对应到那个物件的对应id,由adapter告知 08/11 00:25
13F:→ tomap41017:AdapterView所决定的,因此你要先确定adapter.getItemI 08/11 00:26
14F:→ tomap41017:d传回的是正确的相对应的ID值,这个ID是sql primary key 08/11 00:26
15F:→ tomap41017:另外position是指在adapter内的位置,并不是萤幕上的 08/11 00:26
16F:→ tomap41017:位置喔!! 08/11 00:27