android菜鸟练手小项目之自定义日历,涵盖LitePal数据库,极光推送(三)
2017-05-07 09:55
465 查看
本系列的第三篇,这一篇我们来学习下LitePal数据库的使用,LitePal数据库是安卓大神郭霖维护的项目,大家可以去学习下,下面是他在CSDN专栏讲解的地址的地址。
专栏:Android数据库高手秘籍 - 博客频道 - CSDN.NET http://blog.csdn.net/column/details/android-database-pro.html
按照教程提示我们一步一步集成LitePal,其中最主要的几步配置如下
看一下我的配置litepal.xml
基本上配置到这里就可以正常使用数据库了,至于其他具体的操作细节,大家可以去看郭大神的专栏讲解,我就不在这里啰嗦了,好了下面看下我的使用,首先在接受数据的广播中就保存数据
然后再MainActivity中自定义日历的每日的点击事件主公调用数据库查询的方法,查询当天保存的推送消息的内容,并且显示出来,如下所示
这里讲一下查询的逻辑实现:我是根据点击传入的Date()日期进行查询的,所以数据库保存数据的时候(Receiver中)用的是Date()类型的数据,但是查询的时候用Date()类型比较麻烦,首先java.util.Date包含了年月日时分秒星期等数据,直接转换成String类型来查肯定出错,事实上我在这里也掉坑里了,查了好久都没数据出来,因为根本不可能查到,保存和查询之间总有秒的差别!!!
在这里我想了个笨办法,日历点击的时候我只需要关注点击的是那一天(xxxx年xx月xx日),然后根据这个具体天去查询数据库中对应的年月日保存的数据即可,所以我先要将点击传入的Date类型转换成需要的类型“yyyy-MM-dd”,当然数据库中是没有这种类型的,那我就自己创造一种类型——在JPushData中保存的是Date(),我在这里创造了自己约定需要的类型“yyyy-MM-dd"(String
day),保存的时候直接从Date()中取值,然后set,get进day中,查询的时候只关注传入的Date()的年月日是否等于数据库中day(where day like %2017-05-19%)这一列中保存的数据。如果有相同的就添加进List集合中,然后显示在日历控件的下面。
看下效果图:
补充一点:大家看到的日历中选中颜色发生变化是我为了区分效果加上的,打击还可以更加细致的完善下UI界面,我是在这里加的。
好了,基本上到这里就已经是实现了第一篇中我想要的功能了,但是突然灵光一闪(脑洞大开),想集成个好玩的API进来,也算是让菜鸟(我也是菜鸟)能体味开发的乐趣,至于什么样的API,留待下回见分晓。
大家早点消息吧!!!
专栏:Android数据库高手秘籍 - 博客频道 - CSDN.NET http://blog.csdn.net/column/details/android-database-pro.html
按照教程提示我们一步一步集成LitePal,其中最主要的几步配置如下
看一下我的配置litepal.xml
<?xml version="1.0" encoding="utf-8"?> <litepal> <dbname value="jPush_data" ></dbname> <version value="1" ></version> <list> <mapping class="com.cjt.customcalendar.datas.JPushData"/> </list> </litepal>
基本上配置到这里就可以正常使用数据库了,至于其他具体的操作细节,大家可以去看郭大神的专栏讲解,我就不在这里啰嗦了,好了下面看下我的使用,首先在接受数据的广播中就保存数据
然后再MainActivity中自定义日历的每日的点击事件主公调用数据库查询的方法,查询当天保存的推送消息的内容,并且显示出来,如下所示
这里讲一下查询的逻辑实现:我是根据点击传入的Date()日期进行查询的,所以数据库保存数据的时候(Receiver中)用的是Date()类型的数据,但是查询的时候用Date()类型比较麻烦,首先java.util.Date包含了年月日时分秒星期等数据,直接转换成String类型来查肯定出错,事实上我在这里也掉坑里了,查了好久都没数据出来,因为根本不可能查到,保存和查询之间总有秒的差别!!!
在这里我想了个笨办法,日历点击的时候我只需要关注点击的是那一天(xxxx年xx月xx日),然后根据这个具体天去查询数据库中对应的年月日保存的数据即可,所以我先要将点击传入的Date类型转换成需要的类型“yyyy-MM-dd”,当然数据库中是没有这种类型的,那我就自己创造一种类型——在JPushData中保存的是Date(),我在这里创造了自己约定需要的类型“yyyy-MM-dd"(String
day),保存的时候直接从Date()中取值,然后set,get进day中,查询的时候只关注传入的Date()的年月日是否等于数据库中day(where day like %2017-05-19%)这一列中保存的数据。如果有相同的就添加进List集合中,然后显示在日历控件的下面。
看下效果图:
补充一点:大家看到的日历中选中颜色发生变化是我为了区分效果加上的,打击还可以更加细致的完善下UI界面,我是在这里加的。
好了,基本上到这里就已经是实现了第一篇中我想要的功能了,但是突然灵光一闪(脑洞大开),想集成个好玩的API进来,也算是让菜鸟(我也是菜鸟)能体味开发的乐趣,至于什么样的API,留待下回见分晓。
大家早点消息吧!!!
相关文章推荐
- android菜鸟练手小项目之自定义日历,涵盖LitePal数据库,极光推送(一)
- android菜鸟练手小项目之自定义日历,涵盖LitePal数据库,极光推送(二)
- android菜鸟练手小项目之自定义日历,涵盖LitePal数据库,极光推送,聊天机器人(四)
- Android项目使用Dcloud架构处理极光推送跳转以及加载JS回调方法
- Android极光推送自定义通知问题
- 原生Android项目中集成react-native以及jpush-react-native(极光推送)
- Android之极光推送发送自定义消息
- Android之极光推送发送自定义消息
- Android极光推送自定义消息
- Android 极光推送获取自定义消息
- Android 使用极光推送消息详细介绍之自定义消息
- Android菜鸟练习第三十四课 第三方数据库LitePal的基本使用
- Android项目使用极光推送时步骤及注意的细节
- Android添加手机黑名单,手机来电拦截实现详解与Demo,一个不错的练手项目,涵盖Android四大组件。
- Android小菜鸟向大神进攻的奋斗记(一)之关于Android studio 使用极光推送,集成成功,但是推送不成
- Android极光推送手工整合到项目中的方法
- Ionic项目中使用极光推送-android
- Android 使用极光推送自定义消息打造个性的消息推送效果
- Android 使用极光推送自定义消息推送效果
- android项目中使用开源数据库litepal