請將 FireBase 的前置作業 完成
此文章會介紹我們比較常用到的方法以及儲存方式
因為網路上教學文也經非常多
所以流程就用文字帶過
1 . google-services
build.gradle {
classpath 'com.google.gms:google-services:3.0.0'
}
2 . firebase core
app -> build.gradle
apply plugin: 'com.google.gms.google-services'
.
.
.
build.gradle{
.
.
.
compile 'com.google.firebase:firebase-core:9.2.0'
}
3 . firebase database
app -> build.gradle
build.gradle{
.
.
.
compile 'com.google.firebase:firebase-database:9.2.0'
}
4 . 使用讀取資料,編寫資料
package com.bluecom.soprt.tool;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
public class FireBaseDataBaseTool {
/**
* 讀取資料
* @param columnName
* @param valueEventListener 持續監聽
*/
public static void RetrieveDateValueEvent(String columnName,
ValueEventListener valueEventListener) {
if(columnName != null) {
FirebaseDatabase mFireBaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference databaseReference = mFireBaseDatabase.getReference(columnName);
databaseReference.addValueEventListener(valueEventListener);
}
}
/**
* 讀取資料
* @param columnName
* @param valueEventListener 單次監聽
*/
public static void RetrieveDateSingleValueEvent(String columnName,
ValueEventListener valueEventListener) {
if(columnName != null) {
FirebaseDatabase mFireBaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference databaseReference = mFireBaseDatabase.getReference(columnName);
databaseReference.addListenerForSingleValueEvent(valueEventListener);
}
}
/**
* 儲存資料
* @param columnName
* @param key
* @param value
* @param valueEventListener 連續監聽
*/
public static void SaveDate(String columnName, String key, String value,
ValueEventListener valueEventListener) {
if(columnName != null && key != null) {
FirebaseDatabase mFireBaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference databaseReference = mFireBaseDatabase.getReference(columnName);
databaseReference.child(key).setValue(value);
databaseReference.addValueEventListener(valueEventListener);
}
}
/**
* 儲存資料
* @param key
* @param columnName
* @param value
* @param valueEventListener 連續監聽
*/
public static void SaveDateSingleValueEvent(String columnName, String key, String value,
ValueEventListener valueEventListener) {
if(columnName != null && key != null) {
FirebaseDatabase mFireBaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference databaseReference = mFireBaseDatabase.getReference(columnName);
databaseReference.child(key).setValue(value);
databaseReference.addListenerForSingleValueEvent(valueEventListener);
}
}
}
5 . 介紹 FireBase 儲存的格式
FireBase 是以 JSONTree 儲存
和我們常見的 DB 儲存方法是不太相同
採用重點式儲存
Key 加上 Value
可以參考官方範例 : Structure Your Database
6 . 上方程式碼常用到的置入參數
{
"Members" : {
"Allen" : {
"NO" : "002",
"Phone" : "02-22226666",
"Sex" : "男"
},
"Tina" : {
"NO" : "003",
"Phone" : "02-22226666",
"Sex" : "女"
}
}
}
Reference : 如果要取所有會員資料,那在輸入參數內輸入 : Members
如果要取 Tina 會員資料,那在輸入參數內輸入 : Members/Tina
Key : 有點像是 Java Map 感覺,如果要取 Allen 的編號,Key 輸入 : NO
Value : 同上
7 . 重點 !!!
為什麼要有持續監聽和單次監聽
addValueEventListener :持續監聽
持續監聽是資料只要有變化,就會有改變的狀態。
addListenerForSingleValueEvent : 單次監聽
單次監聽是,我這次儲存完資料後立即取得到回饋
並且結束工作。
沒有留言:
張貼留言