android菜鳥練手小項目之自定義日曆,涵蓋LitePal數據庫,極光推送(三)

本系列的第三篇,這一篇我們來學習下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,留待下回見分曉。生氣生氣

大家早點消息吧!!!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章