Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1512|回复: 0

[默认分类] Android应用开发---listview长按删除该Item数据并删除所在数据库的记录

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-6-19 10:48:57 | 显示全部楼层 |阅读模式


    1、先看下listview适配器
      
    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索引
      
      
    1. int index = 0;// 长按删除指定数据的索引
    复制代码


      
    3、长按得到index
      
    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、找到匹配的一项,并进行删除


      
    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", null, null, null, null, null, null);
    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 )
      
    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中调用
      
      
    1. // 清除原来的数据并更新mlistItemAdapter
    2.                                 mlistItem.clear();
    3.                                 mlistItemAdapter.notifyDataSetChanged();
    复制代码

    之后再重新读取数据库,然后添加进mlistItem即可实现。


    有疑问的可加入这个qq群聊一起讨论:431922622(奋斗的Android青年 )



      


    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-20 02:33 , Processed in 0.342994 second(s), 38 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表