长按删除list 内容

1、先看下listview适配器

[java]  view plain copy
  1. mlistItemAdapter = new SimpleAdapter(  
  2.                 getApplicationContext(),  
  3.                 mlistItem,// 数据源  
  4.                 R.layout.listviewitem, new String[] { "mtext""mtime" },  
  5.                 new int[] { R.id.ItemText, R.id.ItemTime });  

2、index索引

[java]  view plain copy
  1. int index = 0;// 长按删除指定数据的索引  

3、长按得到index

[java]  view plain copy
  1. // 添加长按点击,得到点中的index,即参数arg2  
  2.         mlistview.setOnItemLongClickListener(new OnItemLongClickListener() {  
  3.             @Override  
  4.             public boolean onItemLongClick(AdapterView<?> arg0, View arg1,  
  5.                     int arg2, long arg3) {  
  6.                 // TODO Auto-generated method stub  
  7.                 index = arg2;  
  8.                 return false;  
  9.             }  
  10.         });  

4、找到匹配的一项,并进行删除

[java]  view plain copy
  1. String deleteText = mlistItem.get(index).get("mtext").toString();  
  2.             String deleteTime = mlistItem.get(index).get("mtime").toString();  
  3.             SQLiteDatabase db = dbHelper.getReadableDatabase();  
  4.             // 以下是把所有的表都存进来,然后_id按顺序排列,方便读取数据  
  5.             Cursor cursor = db  
  6.                     .query("user"nullnullnullnullnullnull);  
  7.             while (cursor.moveToNext()) {  
  8.                 String mtext = cursor.getString(cursor.getColumnIndex("mtext"));//得到数据库中的数据  
  9.                 String mtime = cursor.getString(cursor.getColumnIndex("mtime"));  
  10.                 currentTime = new Date();  
  11.                   
  12.                 // 通过主键值来判断点中的listview中的Item所对应的数据库表中的_id  
  13.                 if (deleteText.equals(mtext) && deleteTime.equals(Cursortime)) {  
  14.                     deleteData(cursor.getInt(0));//删除匹配的数据库里记录,cursor.getInt(0)为得到该cursor对用的第一例,及_id  
  15.                     break;  
  16.                 }  
  17.                 db.close();  


5、deleteData(int )

[java]  view plain copy
  1. public void deleteData(int index) {  
  2.     SQLiteDatabase db = dbHelper.getReadableDatabase();  
  3.     // 删除表的所有数据  
  4.     // db.delete("users",null,null);  
  5.     // 从表中删除指定的一条数据  
  6.     db.execSQL("DELETE FROM " + "user" + " WHERE _id="  
  7.             + Integer.toString(index));  
  8.     db.close();  
  9. }  


附加:使用Thread进行数据更新,如不先清除原有的数据,就会在listview后面添加上相同的数据,所以在Handle中调用

[java]  view plain copy
  1. // 清除原来的数据并更新mlistItemAdapter  
  2.                 mlistItem.clear();  
  3.                 mlistItemAdapter.notifyDataSetChanged();  
之后再重新读取数据库,然后添加进mlistItem即可实现。


更多 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值