Android Studio 2.2.3開發Firebase的CRUD (上)

作者 | 2016-12-11

 

本文為『使用Android Studio 2.2.2 開發Firebase – Database篇 part2』的延伸,除了介紹以更簡捷的方式展示Firebase資料內容外 (FirebaseRecyclerAdapter),將介紹如何修改、刪除Firebase資料。

相關文章

Android Studio 2.2.3 如何連接Firebase資料庫,請參考『使用Android Studio 2.2.2 開發Firebase – Database篇』。

如何使用展示Firebase資料庫請參考Hank老師詳細的介紹:『使用RecyclerView展示Firebase資料庫與雲端儲存的相片』,內有FirebaseRecyclerAdapter用法。

DataPicker選擇日期使用方法,請參考 『Android的日期選擇元件DatePicker—SQLite延伸內容1

版本

Android Studio 2.2.3

Support Repository 40

firebase 10.0.1

firebsase-ui 1.0.1

在開始之前

Google為了讓開發人員加速開發Firebase、體驗Firebase的好用之處,而非將時間耗在重工且繁複的程式碼上,自Firebase納入版圖以來,Android Studio Tools、Firebase API更版速度相當快,而FirebaseUI 類別庫無異如虎添翼。

FirebaseUI是一個open source的類別庫,架構在Firebase API之上,整合了Firebase 常用功能,FirebaseUI所提供的功能,基本上都能使用Firebase API達成,事實上,Firebase API已處理掉大量網路背景資料傳送等繁雜程式,而FirebaseUI目的是讓開發人員在處理畫面相關程式時,不直接呼叫Firebase API,透過FirebaseUI類別庫省去呼叫Firebase API時須自行撰寫部份背景處理資料傳送、同步畫面等等這些必要的程式碼。例如本例中將使用的 FirebaseRecyclerAdapter。

接下來,本文將以消費記錄做為範例,介紹如何以RecyclerView展示Firebase資料庫,及如何新增、修改、刪除消費記錄。

消費記錄

前置作業

開啟新專案Expenses,主畫面選擇Basic Activity

1.導入類別庫

除了必要的firebase-database外,手動加入firebase-ui類別庫

2.設計畫面

主畫面 content_main.xml 加入RecyclerView,設定id為recycler

3.Expense類別設計

設計一個屬性同參照資料Expenses的JavaBean Expense

mag_firebase_crud_03

第2行:常數值REF_EXPENSES為Firebase參照資料「Expenses」

4.設計ViewHolder

此例的單列資料顯示採用android提供的layout「android.R.layout.two_line_list_item」,此layout提供兩個TextView供上下兩行顯示,分別是「android.R.id.Text1」及「android.R.id.Text2」。

在MainActivity.java新增一繼承RecyclerView.ViewHolder的內部類別「ExpenseHolder 」

展示Firebase資料

接著,只要將Adapter設定給RecyclerView即可

第1行:取得Firebase參照資料。

第2-3行:使用FirebaseUI提供的FirebaseRecyclerAdapter類別快速生出adapter供RecyclerView顯示,不須實作太多方法即可同步Firebase資料。

第6行:將expense物件傳送到ViewHolder內顯示。

android內建layout皆為滿版,顯示時每筆資料中間並不會有空白,RecyclerView亦提供其他方法可彈性自訂間隔,加入下列一行,可讓RecyclerView顯示資料時,每筆資料中間多一間隔線。

執行結果

mag_firebase_crud_01

新增消費記錄

1.設計新增畫面

新增 Empty Activity 「AddActivity」,activity_add Component Tree 如下 :

mag_firebase_crud_04

2.預設日期

讓datePicker日期預選為今日

 3.儲存

儲存資料前可先檢查資料是否輸入等正確性,若使用textInputLayout元件,可用setError方法顯示錯誤訊訊息。

還記得我們曾經在另一篇文章裡聊過導入Firebase服務時,Android Studio Firebase Tool 做了哪些事嗎?google-services.json 讓 Firebase API 不需任何的初始化、設定即可耗不費力的在APP內任意使用Firebase服務。

第1行:FirebaseDatabase.getInstance().getReference(Expense.REF_EXPENSES)可直接指到下圖「Expenses」參照。

mag_firebase_crud_03

第2行:獲取Firebase異動狀態有多種方式,其他文章我們介紹過 OnSuccessListener類別 、OnFailureListener類別的用法,在此介紹OnCompleteListener類別用法。

第4行:新增匿名類別時會一併實作必要方法onComplete()

第5行:當獲取回應時判斷執行是否成功

執行結果

 mag_firebase_crud_06

當Firebase內新增一筆消費記錄回到主畫面時,FirebaseRecyclerAdapter即透過Firebase API同步將資料回傳並自動顯示在畫面上了,真是貼心的好功能。

mag_firebase_crud_07

當消費記錄新增後,若發現有誤,該如何修改、刪除?

FirebaseRecyclerAdapter貼心幫我們自動完成繁複的資料傳輸和顯示後,RecyclerView該如何視需求彈性調整功能,例如在畫面上長按、滑動、增加按鍵等實務需求?

我們將在下一篇介紹刪除消費記錄,及介紹如何將資料傳遞到AddActivity畫面編輯消費記錄。

相關文章:

使用Facebook直接回應

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *