Android應用開發---listview長按刪除該Item資料並刪除所在資料庫的記錄
阿新 • • 發佈:2019-01-06
1、先看下listview介面卡
mlistItemAdapter = new SimpleAdapter(
getApplicationContext(),
mlistItem,// 資料來源
R.layout.listviewitem, new String[] { "mtext", "mtime" },
new int[] { R.id.ItemText, R.id.ItemTime });
2、index索引
int index = 0;// 長按刪除指定資料的索引
3、長按得到index
// 新增長按點選,得到點中的index,即引數arg2 mlistview.setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub index = arg2; return false; } });
4、找到匹配的一項,並進行刪除
String deleteText = mlistItem.get(index).get("mtext").toString(); String deleteTime = mlistItem.get(index).get("mtime").toString(); SQLiteDatabase db = dbHelper.getReadableDatabase(); // 以下是把所有的表都存進來,然後_id按順序排列,方便讀取資料 Cursor cursor = db .query("user", null, null, null, null, null, null); while (cursor.moveToNext()) { String mtext = cursor.getString(cursor.getColumnIndex("mtext"));//得到資料庫中的資料 String mtime = cursor.getString(cursor.getColumnIndex("mtime")); currentTime = new Date(); // 通過主鍵值來判斷點中的listview中的Item所對應的資料庫表中的_id if (deleteText.equals(mtext) && deleteTime.equals(Cursortime)) { deleteData(cursor.getInt(0));//刪除匹配的資料庫裡記錄,cursor.getInt(0)為得到該cursor對用的第一例,及_id break; } db.close();
5、deleteData(int )
public void deleteData(int index) {
SQLiteDatabase db = dbHelper.getReadableDatabase();
// 刪除表的所有資料
// db.delete("users",null,null);
// 從表中刪除指定的一條資料
db.execSQL("DELETE FROM " + "user" + " WHERE _id="
+ Integer.toString(index));
db.close();
}
附加:使用Thread進行資料更新,如不先清除原有的資料,就會在listview後面新增上相同的資料,所以在Handle中呼叫
// 清除原來的資料並更新mlistItemAdapter
mlistItem.clear();
mlistItemAdapter.notifyDataSetChanged();
之後再重新讀取資料庫,然後新增進mlistItem即可實現。
有疑問的可加入這個qq群聊一起討論:431922622(奮鬥的Android青年
)