サーチ…


Androidにリアルタイムデータベースを追加する

  1. インストールと設定を完了して、あなたのアプリをFirebaseに接続します。
    これでFirebaseにプロジェクトが作成されます。

  2. Firebase Realtime Databaseの依存関係をモジュールレベルのbuild.gradleファイルに追加します:

compile 'com.google.firebase:firebase-database:9.2.1'
  1. Firebaseデータベースルールの設定

これで、Androidのリアルタイムデータベースで作業する準備が整いました。

たとえば、 Hello Worldメッセージをmessageキーの下のデータベースに書き込みます。

// Write a message to the database
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");

myRef.setValue("Hello, World!");

setValueを使ってデータを保存する

setValue()メソッドは、子ノードを含む指定された場所のデータを上書きします。

このメソッドを使用すると、次のことができます。

  1. 使用可能なJSONタイプに対応するパス・タイプは次のとおりです。
  • 文字列
  • 長いです
  • ダブル
  • ブール
  • Map <String、Object>
  • リスト
  1. カスタムJavaオブジェクトを定義するクラスに、引数を取らず、割り当てられるプロパティのパブリック・ゲッターを持つデフォルトのコンストラクターがある場合は、カスタムJavaオブジェクトを渡します。

これは、CustomObjectの例です。
最初にオブジェクトを定義します。

@IgnoreExtraProperties
public class User {

    public String username;
    public String email;

    public User() {
        // Default constructor required for calls to DataSnapshot.getValue(User.class)
    }

    public User(String username, String email) {
        this.username = username;
        this.email = email;
    }

次に、データベース参照を取得し、値を設定します。

   User user = new User(name, email);
   DatabaseReference mDatabase mDatabase = FirebaseDatabase.getInstance().getReference();
   mDatabase.child("users").child(userId).setValue(user);

Firebaseからのデータ挿入またはデータ検索の例

理解する前に、プロジェクトのためのいくつかのセットアップをファイアベースと統合する必要があります。

  1. Firebaseコンソールでプロジェクトを作成し、コンソールからGoogleの-service.jsonファイルをダウンロードし、プロジェクトのアプリケーション・レベルのモジュールに入れて、 コンソールにプロジェクトを作成のためのリンクをクリックしてください

  2. この後、私たちのプロジェクトにいくつかの依存関係を追加する必要があります。

  • まずプロジェクトレベルのgradleクラスパスを追加し、

    classpath 'com.google.gms:google-services:3.0.0'

  • そして、それがアプリレベルのグラデルでプラグインを適用した後、依存セクションの下にそれを書いて、

    apply plugin: 'com.google.gms.google-services

  • 従属セクションにアプリレベルのグラデルを追加する必要がある依存関係がさらにあります

    compile 'com.google.firebase:firebase-core:9.0.2'

    compile 'com.google.firebase:firebase-database:9.0.2'

  • firebaseデータベースにデータを挿入し始めます。まず、インスタンスを作成する必要があります。

    FirebaseDatabase database = FirebaseDatabase.getInstance();

    FirebaseDatabaseオブジェクトを作成した後、データベースにデータを挿入するDatabaseReferenceを作成し、

    DatabaseReference databaseReference = database.getReference().child("student");

    ここでstudentはテーブルがデータベースに存在する場合はテーブル名、それ以外の場合はテーブルにデータを挿入します。そうでない場合は学生名の新しいテーブルを作成します。その後、 databaseReference.setValue();を使用してデータを挿入できdatabaseReference.setValue();以下のような機能、

    HashMap<String,String> student=new HashMap<>();

    student.put("RollNo","1");

    student.put("Name","Jayesh");

    databaseReference.setValue(student);

    ここで私はhasmapとしてデータを挿入していますが、モデルクラスとして設定することもできますが、

  • firebaseからデータを取得する方法を開始します。ここではデータベースからの読み取り値としてaddListenerForSingleValueEventを使用していますが、

      senderRefrence.addListenerForSingleValueEvent(new ValueEventListener() {
              @Override
              public void onDataChange(DataSnapshot dataSnapshot) {
                  if(dataSnapshot!=null && dataSnapshot.exists()){
                      HashMap<String,String> studentData=dataSnapshot.getValue(HashMap.class);
                      Log.d("Student Roll Num "," : "+studentData.get("RollNo"));
                      Log.d("Student Name "," : "+studentData.get("Name"));
                  }
              }
    
              @Override
              public void onCancelled(DatabaseError databaseError) {
    
              }
          });
    

firebaseから値を取得する

  1. クラスを作成し、インポートを追加して情報を解析する:
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.IgnoreExtraProperties;

//Declaration of firebase references
private DatabaseReference mDatabase;

//Declaration of firebase atributtes
public String uID;
public String username;
public String email;

@IgnoreExtraProperties
public class User {

    //Default constructor
    public User() {

        //Default constructor required for calls to DataSnapshot.getValue(User.class)
        mDatabase = FirebaseDatabase.getInstance().getReference();

        //...
    }

    //...
}
  1. addListenerForSingleValueEvent()をデータベース参照に追加します。
//Add new imports
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.ValueEventListener;

//...

public void getUser(String uID){

    //The uID it's unique id generated by firebase database
    mDatabase.child("users").child(uID).addListenerForSingleValueEvent(
            new ValueEventListener () {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                // ...
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                // Getting Post failed, log a message
            }
    });
}
  1. onDataChange()イベントのonDataChange()情報でクラスをonDataChange()ます:
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            //Inflate class with dataSnapShot
            Users user = dataSnapshot.getValue(Users.class);

            //...
        }
  1. 最後に、firebaseクラスのさまざまな属性を通常通り取得できます。
//User inflated
Users user = dataSnapshot.getValue(Users.class);

//Get information
this.uID = user.uID;
this.username = user.username;
this.email = user.email;

ベストプラクティス

  1. firebaseは、32の異なる子レベルをサポートしています。これは、間違った参照を書くのが簡単で、これを回避して最終的なプライベートリファレンスを作成します。
//Declaration of firebase references
//...
final private DatabaseReference userRef = mDatabase.child("users").child("premium").child("normal").getRef();

//...

public void getUser(String uID){

    //Call our reference
    userRef.child(uID).addListenerForSingleValueEvent(
        new ValueEventListener () {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                // ...
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                // Getting Post failed, log a message
            }
    });
}
  1. onCancelled()イベントは、ユーザーがデータベース参照でこの参照にアクセスできないときに呼び出されます。必要に応じてこの例外を制御するための適切なコードを追加します。

詳細については、 公式文書をご覧ください



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow