Naomath / Myapp_for_app_contest_new

0 stars 0 forks source link

firebaseの呼び出しの代入 #2

Open Naomath opened 7 years ago

Naomath commented 7 years ago

ListActivityの87のgroupTwoWordsがnullになってる

halu5071 commented 7 years ago

ちなみに、FirebaseのDatabaseの画面のスクショ貼れる??

halu5071 commented 7 years ago

まず、

public void down_load_time(){
        //ダウンロードの時の処理
        FirebaseDatabase database = FirebaseDatabase.getInstance();
        DatabaseReference reference = database.getReference("group");
        reference.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                //変更された時

                    GenericTypeIndicator<ArrayList<GroupTwoWords>> indicator = new GenericTypeIndicator<ArrayList<GroupTwoWords>>() {};
                    GroupTwoWords groupTwoWords= dataSnapshot.getValue(GroupTwoWords.class);
                    adapter.add(groupTwoWords);
            }

ここのonDataChange()の中身だけど、DataSnapshot型で取れるデータは、Firebaseの特定の枝(ここわかる??)に保存されているデータをまるごと持ってきてるのね。

なので、ここからGroupTwoWords型のデータに合うように、dataSnapshotという引数から子要素を取得する必要がある。

サンプルコード

 public void onDataChange(DataSnapshot dataSnapshot) {
                //変更された時
    for(DataSnapshot snapshot: dataSnapshot.getChildren()){
        GroupTwoWords groupTwoWords = snapshot.getValue(GroupTwoWords.class);
    }

ここの時点の引数はそれぞれ、

dataSnapshotから、getChildren()メソッドでsnapshotを取得してる。

拡張for文

ここのfor文では、「拡張for文」というのを用いたよ https://www.javadrive.jp/start/for/index8.html

DataSnapshotクラスのドキュメント

https://firebase.google.com/docs/reference/android/com/google/firebase/database/DataSnapshot 使えるメソッドとか、使い方が書いてあるよ(英語だけど...)

halu5071 commented 7 years ago

ものすごく簡単に図にしてみた 2017-08-29 21 51 19

いま、User "Gami0001"のデータをダウンロードしてきたとして、dataSnapshotに入っているのは上の青い部分。そこをfor文で一つひとつ取得して、snapshotに入れていく。それが上の赤い部分。

※「ダウンロード(download)」ではなく「フェッチ(fetch)」がよく使われるので覚えておくといいよ

Naomath commented 7 years ago

ありがとうございます!!!!!! めっちゃわかりやすいです!! やってみます

halu5071 commented 7 years ago

暇があったときに読むこと推奨

Firebaseデータベースの参考

Firebaseのデータベース構造・データベースデザインは、これが参考になるから見てみて。 http://gihyo.jp/dev/serial/01/firebase Firebaseで採用されているデータベースは、JSONを用いたNoSQLなんだよ。(難しいね笑) https://academy.gmocloud.com/qa/20160509/2284

[WIP] データベース全般の参考リンク

あと9月に入ってからでいいけど、この辺を見ておくとデータベースの理解が早まるよ

Naomath commented 7 years ago

あざす