請將 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 : 單次監聽
單次監聽是,我這次儲存完資料後立即取得到回饋
並且結束工作。
沒有留言:
張貼留言