1. 程式人生 > >Android應用開發---listview長按刪除該Item資料並刪除所在資料庫的記錄

Android應用開發---listview長按刪除該Item資料並刪除所在資料庫的記錄

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青年 )