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




转载请注明本文地址: Android应用开发---listview长按删除该Item数据并删除所在数据库的记录
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值