看板 AndroidDev 關於我們 聯絡資訊
你們好,我想請問各位大大 我有實作一個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
jimwayne123:個人的作法是select的時候自己把id存一個陣列 08/09 12:37
jimwayne123:新增刪除時同時對id的陣列做新增刪除,來確保對應都是 08/09 12:38
jimwayne123:正確的...不過也許有更聰明的方法吧~ 08/09 12:38
notcorn:你好,這個方法我也有想過,只是考慮到資料太多是會佔用空 08/09 13:03
notcorn:間還是花時間存陣列,所以才想說有沒有更直接的方法, 08/09 13:03
notcorn:不過,還是謝謝你花時間 08/09 13:05
chiwa:db我不是很熟悉,不過應該有方法用info.Id當primary key吧? 08/10 08:02
tomap41017:就是用info.id呀!!原PO想太多了 08/10 18:16
tomap41017:info.id就是對應到該筆sql的_id,所以用它去增刪即可 08/10 18:16
notcorn:T大不好意思,id是0.1.2,用info.id下去刪除後,再顯示卻 08/10 22:44
notcorn:是0.1而不是0.2這樣(刪除了1這筆),會是我哪裡寫錯嗎?謝謝 08/10 22:45
tomap41017:info.id是對應到那個物件的對應id,由adapter告知 08/11 00:25
tomap41017:AdapterView所決定的,因此你要先確定adapter.getItemI 08/11 00:26
tomap41017:d傳回的是正確的相對應的ID值,這個ID是sql primary key 08/11 00:26
tomap41017:另外position是指在adapter內的位置,並不是螢幕上的 08/11 00:26
tomap41017:位置喔!! 08/11 00:27