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();