android菜鸟练手小项目之自定义日历,涵盖LitePal数据库,极光推送(三)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010898329/article/details/71307982

本系列的第三篇,这一篇我们来学习下LitePal数据库的使用,LitePal数据库是安卓大神郭霖维护的项目,大家可以去学习下,下面是他在CSDN专栏讲解的地址的地址。

专栏: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,留待下回见分晓。生气生气

大家早点消息吧!!!


猜你喜欢

转载自blog.csdn.net/u010898329/article/details/71307982