原文地址为:Android应用开发---listview长按删除该Item数据并删除所在数据库的记录
2、index索引
4、找到匹配的一项,并进行删除
转载请注明本文地址: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数据并删除所在数据库的记录