日期范围搜索

news2024/11/23 21:31:21

1.日期范围选择界面

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <Space
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:ems="1"
                android:text="开始"
                android:textSize="30sp" />

            <DatePicker
                android:id="@+id/datePicker_start"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:calendarViewShown="false" />

            <Space
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <Space
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:ems="1"
                android:text="结束"
                android:textSize="30sp" />

            <DatePicker
                android:id="@+id/datePicker_end"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:calendarViewShown="false" />

            <Space
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1" />

        </LinearLayout>

    </LinearLayout>
</ScrollView>

 2.加载界面,选择开始日期和结束日期,点击确定查询

String[] from = { "_id", "time", "location", "event" };
int[] to = { R.id.textView_id, R.id.textView_time, R.id.textView_location, R.id.textView_event };
SimpleCursorAdapter.ViewBinder viewBinder;

viewBinder = new SimpleCursorAdapter.ViewBinder() {
    public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
        if (view.getId() == R.id.textView_time) {
            Date date = new Date(cursor.getLong(columnIndex));
            ((TextView)view).setText(SDF.format(date));
            return true;
        }
        return false;
    }
};
LayoutInflater layoutInflater = LayoutInflater.from(this);
View view = layoutInflater.inflate(R.layout.date_range, null);
final DatePicker datePicker_start = (DatePicker)view.findViewById(R.id.datePicker_start);
final DatePicker datePicker_end = (DatePicker)view.findViewById(R.id.datePicker_end);
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(android.R.drawable.ic_menu_search);
builder.setTitle("日期范围搜索");
builder.setView(view);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
     @ Override
    public void onClick(DialogInterface dialog, int which) {
        Date date_start = new Date(datePicker_start.getYear() - 1900, datePicker_start.getMonth(), datePicker_start.getDayOfMonth());
        Date date_end = new Date(datePicker_end.getYear() - 1900, datePicker_end.getMonth(), datePicker_end.getDayOfMonth());
        Field field = null;
        try { //通过反射获取dialog中的私有属性mShowing
            field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
            field.setAccessible(true); //设置该属性可以访问
        } catch (Exception e) {
            Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show();
        }
        if (date_end.getTime() >= date_start.getTime()) {
            DBHelper helper = new DBHelper(MainActivity.this);
            Cursor cursor = helper.query(tableName, date_start.getTime(), date_end.getTime());
            int count = cursor.getCount();
            if (date_end.getTime() > date_start.getTime())
                setTitle(username + SDF_date.format(date_start) + "到" + SDF_date.format(date_end) + "的账目" + count);
            else
                setTitle(username + SDF_date.format(date_start) + "的账目" + count);
            adapter = new SimpleCursorAdapter(MainActivity.this, R.layout.item_cash, cursor, from, to, 0);
            adapter.setViewBinder(viewBinder);
            listView.setAdapter(adapter);
            try { //关闭
                field.set(dialog, true);
                dialog.dismiss();
            } catch (Exception e) {
                Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show();
            }
        } else {
            Toast.makeText(getApplicationContext(), "结束日期比开始日期早!", Toast.LENGTH_SHORT).show();
            try { //设置dialog不可关闭
                field.set(dialog, false);
                dialog.dismiss();
            } catch (Exception e) {
                Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show();
            }
        }
    }
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
     @ Override
    public void onClick(DialogInterface dialog, int which) {
        Field field = null;
        try {
            //通过反射获取dialog中的私有属性mShowing
            field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
            field.setAccessible(true); //设置该属性可以访问
        } catch (Exception ex) {}
        try {
            field.set(dialog, true);
            dialog.dismiss();
        } catch (Exception e) {
            Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show();
        }
    }
});
builder.create().show();

3.查询

public Cursor query(long date_start, long date_end) {
    db = getWritableDatabase();
    Cursor c;
    if (date_start != date_end)
        c = db.query(TableName, null, "time >= " + date_start + " and time <= " + (date_end + 24 * 60 * 60 * 1000), null, null, null, "time asc");
    else
        c = db.query(TableName, null, "time >= " + date_start + " and time <= " + (date_start + 24 * 60 * 60 * 1000), null, null, null, "time asc");
    return c;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1054299.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

构建一个TypeScript环境的node项目

本文 我们用一种不太一样的方式来创建项目 这里 我们事先创建了一个文件夹作为项目目录 然后打开项目终端 输入 npm init然后 在新弹出的对话框中 大体就是 名字随便写一个 然后 后面的回车&#xff0c;到最后一个输入 yes 然后回车 这样 我们就有一个基础的 node项目结构了…

Alibaba Cloud Linux 3安装Docker

出现以上报错&#xff0c;进行以下操作&#xff1a; cd /etc/yum.repos.d/ rm -rf docker-ce.repo 然后进行docker安装&#xff08;以社区版为例&#xff09; 1.添加docker-ce的dnf源 dnf config-manager --add-repohttps://mirrors.aliyun.com/docker-ce/linux/centos/do…

CCC数字钥匙设计【NFC】 --车主配对流程介绍

1、车主配对流程介绍 车主配对流程可以通过车内NFC进行&#xff0c;若支持UWB测距&#xff0c;也可以通过蓝牙/UWB进行&#xff0c;本文主要介绍通过NFC进行车主配对的流程。 整个配对流程相对较为复杂&#xff0c;本文主要梳理整体的步骤流程&#xff0c;其中的每个细节流程未…

Linux——补充点(进程切换及页表映射)

目录 补充点1&#xff1a;进程地址空间堆区管理 补充点2&#xff1a;Linux内核进程上下文切换 补充点3&#xff1a;页表映射 补充点4&#xff1a;两级页表 补充点1&#xff1a;进程地址空间堆区管理 Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程&#…

fashion_mnist.load_data()出现[winError 10054] 远程主机强迫关闭了一个现有的连接解决方法

我已经解决完了&#xff0c;之前错误大概是下载超时失败&#xff0c;国外资源嘛&#xff0c;懂得读懂&#xff0c;一般这种情况&#xff0c;两种解决思路&#xff1a;第一种搭个梯子&#xff0c;这种治根&#xff1b;第二种就是像我一样找一个免费资源下载过来即可&#xff0c;…

面试题:线程池灵魂8连问,你挡的住吗?

文章目录 1. 面试官&#xff1a;日常工作中有用到线程池吗&#xff1f;什么是线程池&#xff1f;为什么要使用线程池&#xff1f;2. 面试官&#xff1a;ThreadPoolExecutor 都有哪些核心参数&#xff1f;3. 面试官&#xff1a;什么是阻塞队列&#xff1f;说说常用的阻塞队列有哪…

SVN相关-比较差异的时候哪边是最新的

SVN相关-比较差异的时候哪边是最新的 SVN相关-比较差异的时候哪边是最新的 SVN相关-比较差异的时候哪边是最新的

毛玻璃时钟特效

效果展示 页面结构组成 从上述的效果展示可以看到&#xff0c;我们的背景图片是有三个色块组成&#xff0c;为了能够掌握linear-gradient属性&#xff0c;所以我们背景的三个色块可以采用此属性来实现。 而时钟的数字我们采用背景图片实现&#xff0c;而三个指针我们是用元素…

【夏虫语冰】测试服务器端口是否打开(命令行、Python)

文章目录 1、简介2、命令行2.1 telnet2.1.1 工具简介2.1.2 工具配置2.1.3 工具使用 2.2 curl2.2.1 工具简介2.2.1 工具下载2.2.1 工具使用 2.3 wget2.3.1 工具简介2.3.2 工具下载2.3.2 工具使用 2.4 nc2.4.1 工具简介2.4.2 工具安装2.4.3 工具使用 2.5 ssh2.5.1 工具简介2.5.2 …

【OpenMV】AprilTag标记跟踪 NCC模板匹配 测距与测量物体大小

目录 AprilTag标记跟踪 NCC模板匹配 测距以及测量物体大小 识别乒乓球的距离与大小 红色矩形与蓝色矩形同时识别 AprilTag标记跟踪 Tag36h11&#xff0c;Tag25h9&#xff0c;Tag16h5 Tag36h11信息量更大&#xff0c;更准确 # AprilTags Example # # This example show…

STM32晶振的选择与计算

目录 1、石英晶体特性和型号2、振荡器理论2.1负电阻2.2跨导2.3负阻振荡器原理 3、皮尔斯振荡器设计3.1 皮尔斯振荡器简介3.2反馈电阻器3.3负载电容3.4振荡器跨导3.5驱动电平和外部电阻计算3.5.1计算驱动电平3.5.2另一种驱动电平测量方法3.5.3计算外部电阻 3.6启动时间3.7晶体拉…

Python_面向对象

面向对象编程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;是一种编程范式&#xff0c;它将数据和操作数据的方法组合在一起&#xff0c;以便将数据和行为视为一个整体。这种编程范式的历程可以追溯到20世纪60年代&#xff0c;但直到80年代才开始流行。…

【C语言】【结构体的位段】位段的内存分配及注意事项

1.什么是位段&#xff1a; struct A { int _a:2; int _b:5; int _c:10; int _d:30; };1.A就是一个位段类型的变量&#xff0c;位表示比特位&#xff0c;意思是 A中的变量申请内存的比特位数 比如 _a要占 2 个bit 2.位段的成员必须是 int ,unsigned int ,signed int 类型的&…

瑞吉shardingjdbc4.0.0-RC1-->RC2 读写分离示例错误排查

linux环境&#xff1a;CentOS7.8mysql5.7.29 idea&#xff1a;jdk1.8maven3.5 框架&#xff1a;springboot2.4.5 mybatisplus3.4.2(mybatis-plus-boot-starter)sharding-jdbc4.0.0-RC2(sharding-jdbc-spring-boot-starter兼容性问题由1改成2)druid B站项目视频&#xff1a;…

格拉姆角场GAF将时序数据转换为图像并应用于凯斯西楚大学轴承故障诊断(Python代码,CNN模型)

1.运行效果&#xff1a; 格拉姆角场GAF将时序数据转换为图像并应用于故障诊断&#xff08;Python代码&#xff09;_哔哩哔哩_bilibili 环境库 只要tensorflow版本大于等于2.4.0即可运行 2.GAF的内容 GAF是一种用于时间序列数据可视化和特征提取的技术&#xff0c;通常用于…

小谈设计模式(9)—工厂方法模式

小谈设计模式&#xff08;9&#xff09;—工厂方法模式 专栏介绍专栏地址专栏介绍 工厂方法模式角色分类抽象产品&#xff08;Abstract Product&#xff09;具体产品&#xff08;Concrete Product&#xff09;抽象工厂&#xff08;Abstract Factory&#xff09;具体工厂&#x…

去雨去雪去雾数据集构建

在进行去雨去雪去雾算法的学习过程中&#xff0c;需要构建去雨去雪去雾数据集&#xff0c;本文参考Learning Multiple Adverse Weather Removal via Two-stage Knowledge Learning and Multi-contrastive Regularization: Toward a Unified Model论文中的数据集设定&#xff0c…

15np+pandas+matplotlib

numpy 维数 一维:shape(4,)二维:shape(4,5)三维:shape(4,5,6) 创建ndarray–np.array() # 可以是数组[1,2,3] 元组(1,2,3) 迭代对象range(n) np.array([1,2,3,4,5])列表中元素类型不同&#xff0c;会使用元素类型最大的作为ndarray类型 指定维度ndim 赋值操作 赋值&#xff…

【SpringBoot学习】收藏的学习资料,精!

文章目录 Spring实战&#xff08;第五版&#xff09;&#xff1a; https://potoyang.gitbook.io/spring-in-action-v5/di-er-bu-fen-ji-cheng-spring Spring实战&#xff08;第五版&#xff09;&#xff1a; https://potoyang.gitbook.io/spring-in-action-v5/di-er-bu-fen-ji-…

【cv】图像预处理技术——从特征检测讲述图像预处理理论、实践、应用|01

博主简介&#xff1a;努力学习的22级计算机科学与技术本科生&#x1f338;博主主页&#xff1a; 是瑶瑶子啦每日一言&#x1f33c;: 每一个不曾起舞的日子&#xff0c;都是对生命的辜负。——尼采 文章目录 前言0、特征检测、特征提取、特征描述、特征匹配一、图像预处理概述二…