作者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