2011年9月24日 星期六

Android小品_Ola Account

說也奇怪,最近回家打開電視,不是理財節目就是政論節目,『夢想街57號』是我比較愛'聽'的節目,裡面的阿娟將許多理財投資觀念用很淺顯易懂的方式闡述,但其實講來講去最根本的當然就是'開源節流';說到開源大家都有很多很多的方式,可以買股票、買基金、談加薪、換工作、兼小差、嫁個有錢人,但節流第一步則不是學會怎麼節省,而是先瞭解自己的現金流,所謂『瞭解現金流』其實也就是記帳。

遙想當年我還在宜蘭打籃球,研究室打電動(?)的時候,不管是用小本子或是excel,都還有一個很好的記帳習慣,但真正開始工作以後,反而停止了這個好習慣;前一陣子在很多廣告牆與公車上有一句曝光率很高的廣告詞『未來的你會感謝現在的你』,所以也讓29.8歲的我想到另一個廣告詞『30歲了,還在這裡做什麼?』。

總之,開源還要想辦法,節流總是可以做了,那記帳就是第一步!

那身為一個半路出家、底子不穩、腦袋很小、很想在生活中使用自己程式的工程師,我馬上就決定要寫自己的記帳程式。
-----------------------------------------------------------------------------
但是記帳本說:你太小看我了;所以剛開始寫沒多久就後悔了,記帳程式可以擴充的範圍實在太廣,想要寫出一個"完善的",似乎也不是一時半刻可以完成,身為一個沒什麼毅力跟腦力的29.8歲窮鬼,實在是不想等到40歲才開始記帳,所以在時程不變、人力不變、品質也不想變的情況下,只好降低程式規模,做人要果決,就在資料庫ola、程式ola、介面ola與計畫經理ola四個人討論的結果,決定做出一個世界超級無敵陽春的......記支出本。

需要的功能完全針對客戶ola的需求:
1. 要可以記下項目跟金錢。
2. 可以修改記下的內容。
3. 一進程式就可以看到本月與本日金額
4. 可以查詢歷史資料
5. 含有一些簡單的統計

所以,登~登~登~登!

1. 一進到畫面有本月份的食、衣、住、行、育、樂、其他的金額統計,接著是本日的各項花費列表,右下角是本月與本日花費的總計。

2. 按下『又花錢』按鈕會跳出輸入對話框,可以輸入項目、金額、日期、時間跟備註。

3. 點選列表會跳出修改的對話框,可以對所有項目進行修改。

4. 長按列表項目會跳出刪除項目的對話框。

5. 點選手機選單按鍵,會跳出歷史與匯出/入的項目。

6. 點選『歷史』項目,會跳到歷史資料頁面。上方為年、月、日的切換選單,若選年則會列出該年總花費、接著是顯示各項目花費、再下面是以月區分的總計;右下角可以切換查詢時間點,若是輸入2011年9月24日,則按下"年"時出現2011年總計、按下"月"出現2011年9月總計、按下"日"則出現該日期各細項。

7. 按下"月"顯示該月各天總計。(點選列表各天可切換到該天項目列表)

8. 按下"日"顯示該天各細項。(點選細項可進入修改頁面)

9. 因為一邊寫一邊用,怕會不小心把資料刪掉,所以增加匯出/入功能。(匯出JSON格式)


最後,許個願,希望這次記帳不要停下來!加油!

12 則留言:

kolen 提到...

WOW,這APP有酷。

ola的家 提到...

有記帳有差,會比較不想花錢。 ㄎㄎ

匿名 提到...

想請問~跳出視窗可以輸入
要怎麼做呢???

ola的家 提到...

我是利用AlertDialog以setView塞入自訂的View,然後在setPositiveButton與setNegativeButton寫按下儲存與取消的動作。

匿名 提到...

可否請問您的第三點修改部分
如何讓資料庫判斷你點到的那一筆listview
就是我現在不管點哪個都是只抓到第一筆資料
修改資料庫內容是沒問題的~就卡在抓資料的部分

ola的家 提到...

有兩個單純的方式:
1. 在listview的resource擺上一個隱藏欄位(android:visibility="invisible"),然後在ItemClick地事件取出來,再去查SQLite。

2. 準備一個對應的Array,利用onItemClick的id參數作對應。

-----------------------------------

又如果你直接放入的是Cursor,可以參考http://wangshifuola.blogspot.com/2011/10/androidcursorspinnertextvalue.html這種方式

匿名 提到...

您好我最近也在試著自己寫android程式
看到您寫的記帳軟體覺得很有趣希望能做個參考
不知道是不是可以跟您索取整個程式呢
因為很多東西不知道從何下手加上技術上有些困難

如果寄程式不方便的話
可不可以寄APK檔呢?

ola的家 提到...

原始程式碼好像後來測試別的功能時改亂了,當時都在測試所以沒有特地留下來耶。 XD

你是需要什麼功能?

匿名 提到...

//get all of year
public Cursor getyear1() {
return db.rawQuery("SELECT * FROM "+
UserSchema1.TABLE_NAME + " Group by "+
UserSchema1.Day_year, null);
}
/*UserSchema1.Day_year
UserSchema1.Money*/這是相關的資料表
我想要取年結算
select _year,sum(_money)
from Account
Group by _year
這樣可以取得~~但是不會打在android的程式裡耶
想請大大指教一下~:) 最上面是我目前的程式

ola的家 提到...

select _year,sum(_money) from Account Group by _year

這句如果用query的方法就是:
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query("Account", new String[] {_year,sum(_money) _money}, null, null, "_year", null, null);

匿名 提到...

想請問怎麼把select出來的sum放到listview??

ola的家 提到...

就跟查詢一般欄位一樣,但是Select的部分記得要用別名,然後取欄位的時候用別名來取。

假設你的別名取的跟原欄位名稱相同,就不需要做任何改變。

EX:"sum(money) money"

張貼留言