首页 > 其他分享 >安卓开发九——长按删除记录和定时刷新页面

安卓开发九——长按删除记录和定时刷新页面

时间:2024-02-03 19:35:00浏览次数:23  
标签:删除 安卓 id void new 定时 public 页面

这里我们完成了账本条目数据的查看方法和账本条目的添加,但是当我们发现账本的数据有错误是,我们目前还不能删除。于是我们接下来要完成条目的删除的功能。

这里我们在查看某个的账本的明细的页面来操作,我这里采用设置长按下删除。

      listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
          @Override
          public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
              new AlertDialog.Builder(MainActivity.this).setTitle("注意")
                      .setMessage("是否删除要此项记录?").setPositiveButton("确定", new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialog, int whichButton) {
                      String view1= String.valueOf(listAdapter.getItemId(position));
                      SQLiteDatabase db = helper.getWritableDatabase();
                      db.delete("account2","_id= ?",new String[]{view1});
                      Toast.makeText(getBaseContext(), "已删除", Toast.LENGTH_SHORT).show();
                      initData();
                  }
              }).setNegativeButton("取消", new DialogInterface.OnClickListener() {
                          public void onClick(DialogInterface dialog, int whichButton) {
                              Toast.makeText(getBaseContext(), "已取消删除", Toast.LENGTH_SHORT).show();
                          }
                      }).create().show();
              return false;
          }
      });

为了防止误删,这里还做了一个小窗来进行询问,点击确定后才会进行删除。

我们注意,我们数据库的主键为id,这个在页面上是不显示的,但是在我们的辅助类中是有这个set和get方法的,所以我们适配器接收到的辅助类的列表也是含有id这个属性值的。于是在我们的自定义的适配器中,我们久需要对getItemId这个方法进行重写,这个方法的返回值是一个long类型的,我们需要进行强制类型转换。

public long getItemId(int position) {
        return Long.parseLong(mList.get(position).get_id());
    }

这样我们就能根据我们长按来进行定向删除数据了。

试用后发现,在删除完数据后,页面不会刷新,于是还在删除完后重新调用了初始化页面的方法。

但是最后这个月全部删除完成后我们返回到主页面时,主页面还保留了这个月,于是我们还要设置主页面的刷新。

private Runnable mRunnable = new Runnable() {
        @Override
        public void run() {
            while(true){
                try {
                    //sleep2秒,可根据需求更换为响应的时间
                    Thread.sleep(200);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                mHandler.sendMessage(mHandler.obtainMessage());
            }
        }
    };
    //调用定时刷新函数
    private Handler mHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            refresh();//编写的定时刷新函数
        }
    };
    private void refresh() {
        iniView();
    }

这样我们的记账本就基本完成了。

标签:删除,安卓,id,void,new,定时,public,页面
From: https://www.cnblogs.com/zhenaifen/p/18001800

相关文章

  • 安卓开发二——项目内容和页面跳转
     创建一个初始目录后会又以下的几个文件目录manifests中有一个Androidmanifests.xml的文件它包含了我们这个软件的图标、名字等的基本信息 其中的activity标签中是我们的app所要使用的页面的注册信息 Java的文件目录中我们主要使用的就是第一个文件目录,其中的Java代码包......
  • 安卓开发1——安装Android studio
    去网上找Android的studio1的下载教程找到对应的下载链接,下载 因为我有安装完成后就把下载的软件安装的文件删除的习惯所以就不展示了具体的安装教程可以看AndroidStudio安装配置教程-Windows(详细版)-CSDN博客 安装后新建项目完成后在最右侧的第三个可以挑选自己安卓......
  • FreeRTOS--软件定时器
    示例源码基于FreeRTOSV9.0.0软件定时器1.概述软件定时器用来在未来某个时间点执行某个动作,或者周期性地执行某个动作;软件定时器的实现依赖于系统滴答中断。2.设计原理定时器分为单次定时器和周期定时器,定时时间到执行注册的回调函数。单次定时器触发后即睡眠(不会销毁,依旧......
  • IIS网站定时停止和启动
     一,创建2个批处理文件iisstart.bat@echooffnetstartiisadminnetstartw3svc iisstop.bat@echoofftaskkill/f/imw3wp.exeiisreset/STOPtaskkill/f/imw3wp.exe 二,通过windows自带“任务计划程序”定时执行批处理命令 下面注意权限 为“使用最......
  • Trino-登录WebUI页面报错,日志中提示:
    问题描述启动Trino客户端执行showcatalogs时报错:Errorstartingqueryathttp://localhost:8080/v1/statementreturnedaninvalidresponse。 此时在浏览器中访问TrinoWebUI,http://192.168.80.133:8080,页面报错:404 NotFound. 问题原因(1)查询Trino日志发现:BindEx......
  • Blazor里,如何在 razor 页面使用 BackgroundService 实例
    Blazor使用BackgroundService需要注册builder.Services.AddHostedService<PageStateService>();razor页面要使用 PageStateService的实例,需要 PageStateService有接口,我们给PageStateService写一个接口 IPageStateService然后在页面直接注入实例@injectIPageSt......
  • 无边框 自定义页面 圆角 自定义关闭按钮 wfp 钱包夹
    无边框自定义页面圆角 自定义关闭按钮wfp钱包夹C#.net4.8wpfSqlServer2012消息队列Redis 来源银柱网-李银柱个人博客http://www.liyinzhu.com......
  • 页面跳转传参,携带的数值型数据会转成是字符串
    onLoad(options){let{limit,index}=optionsindex=Number(index);limit=Number(limit)console.log(options); //获取视频页面数据wx.cloud.callFunction({name:'getMedia',data:{sort:'video',......
  • C++第五十五篇-定时器SetTimer
    使用的一个百度AI代码生成网站: https://yiyan.baidu.com/定时器的实现示例:新建一个程序 编写ConsoleApplication1.cpp#include<iostream>#include<Windows.h>usingnamespacestd;#pragmacomment(lib,"User32.lib")//首先定义一个计时器计时事件的定义#define......
  • vue项目路由配置,打开页面空白,其他菜单正常显示问题
     如果你的项目文件夹里面的内容同时存在index.js  index.vue(类似),那么路由配置路径的时候一定要带上.vue如果单纯的写Index,会找到.js文件,导致页面不显示   ......