[問題] 關於ListView+Sqlite的配合

看板AndroidDev作者 (玉米)時間13年前 (2011/08/09 11:02), 編輯推噓2(2014)
留言16則, 4人參與, 最新討論串1/1
你們好,我想請問各位大大 我有實作一個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

08/09 12:37, , 1F
個人的作法是select的時候自己把id存一個陣列
08/09 12:37, 1F

08/09 12:38, , 2F
新增刪除時同時對id的陣列做新增刪除,來確保對應都是
08/09 12:38, 2F

08/09 12:38, , 3F
正確的...不過也許有更聰明的方法吧~
08/09 12:38, 3F

08/09 13:03, , 4F
你好,這個方法我也有想過,只是考慮到資料太多是會佔用空
08/09 13:03, 4F

08/09 13:03, , 5F
間還是花時間存陣列,所以才想說有沒有更直接的方法,
08/09 13:03, 5F

08/09 13:05, , 6F
不過,還是謝謝你花時間
08/09 13:05, 6F

08/10 08:02, , 7F
db我不是很熟悉,不過應該有方法用info.Id當primary key吧?
08/10 08:02, 7F

08/10 18:16, , 8F
就是用info.id呀!!原PO想太多了
08/10 18:16, 8F

08/10 18:16, , 9F
info.id就是對應到該筆sql的_id,所以用它去增刪即可
08/10 18:16, 9F

08/10 22:44, , 10F
T大不好意思,id是0.1.2,用info.id下去刪除後,再顯示卻
08/10 22:44, 10F

08/10 22:45, , 11F
是0.1而不是0.2這樣(刪除了1這筆),會是我哪裡寫錯嗎?謝謝
08/10 22:45, 11F

08/11 00:25, , 12F
info.id是對應到那個物件的對應id,由adapter告知
08/11 00:25, 12F

08/11 00:26, , 13F
AdapterView所決定的,因此你要先確定adapter.getItemI
08/11 00:26, 13F

08/11 00:26, , 14F
d傳回的是正確的相對應的ID值,這個ID是sql primary key
08/11 00:26, 14F

08/11 00:26, , 15F
另外position是指在adapter內的位置,並不是螢幕上的
08/11 00:26, 15F

08/11 00:27, , 16F
位置喔!!
08/11 00:27, 16F
文章代碼(AID): #1EGACmZa (AndroidDev)
文章代碼(AID): #1EGACmZa (AndroidDev)