2016-10-04 6 views
1

途中でそれを取り除くには、はい、同様の質問がありますが、それは私の状況が私の考えるところを正確に説明するものではありません。私は単にのArrayListを取得し、「テンプレート」、および他の回で、各テンプレートの一覧を表示できるようにする必要がありAndroid Firebase:特定のキーの下ですべての値を取得するにはどうすればいいですか?

users{ 
    userid{ 
     templates{ 
      templateName1{ // example name that the user saves their template as. 
          // each template is an ArrayList 
        //templateName1 ArrayList contents 
      } 
      templateName2{ 
        //templateName1 ArrayList contents 
      } 
      templateName2{ 
        //templateName1 ArrayList contents 
      } 
     } 
    } 
} 

:Firebaseリアルタイムデータベースで

は、私はこのようになりますJSONツリーを持っています特定のテンプレートの値。しかし、私はこの単純なことをどうやって行うのか分かりません。私はデバッグする場合

DatabaseReference mTemplateRef = mDatabase.child("users").child(uid).child("templates"); 

    mTemplateRef.addListenerForSingleValueEvent(
      new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        dataSnapshot.getChildren(); 

        // somehow get the values here 

       } 
    }); 

、と私は内容を見ることができます)(発現データdataSnapshot.getChildrenを入力します。私は/グーグルドキュメントに何を読んでから、

、私のコードは次のようになります。私のアプリにそのデータを取得することはできません。何か案は?

答えて

1

これは私が探していたものです:

settingsRef.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      for(DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()){ 
       // easy 
       String value = dataSnapshot1.getValue(String.class);      
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
0

このコードのようなもの:

public class Template { 

    String name; 
    ArrayList<String> list; 

    public Template() { 
    } 

    public Template(String name, ArrayList<String> list) { 
     this.name = name; 
     this.list = list; 
    } 

    public String getName() { 
     return name; 
    } 

    public ArrayList<String> getList() { 
     return list; 
    } 
} 

を示すようにあなたがゲッターとテンプレートのクラス、空とパラメータ化コンストラクタを作成することを示唆しています

mTemplateRef.addListenerForSingleValueEvent(
      new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
       // dataSnapshot itself a child of "templates" 
     DataSnapshot messageSnapshot= dataSnapshot; 
        DataType author =   (DataType)messageSnapshot.child("array").getValue(); 

        // somehow get the values here 

       } 
    }); 
1

は今、あなたは簡単にこの

を行うことができます
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      for(DataSnapshot data : dataSnapshot.getChildren()){ 

       Template template = data.getValue(Template.class); 
       // use this object and store it into an ArrayList<Template> to use it further 

      } 

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
+0

私はまだ問題があります。どのようにすれば、キー "templates"の下にあるすべてのArrayListをリストすることができますか?たぶん、各反復が追加される別々のArrayListを持っていますか?あなたのテンプレートクラスに対するArrayListの設定はどうですか?私もこのエラーが表示されます:com.google.firebase.database.DatabaseException:java.util.ArrayList型のオブジェクトをcom.app.template_editor.template型に変換できません – theRealOne

+0

私は前のコメントを残すつもりですあなたが何か明白なことを見ても、私は何をすべきか分かっていると思うので、放課後の今日までそれをテストすることはできません。 – theRealOne

+0

だから、今言ったことはやったけど、あなたが提供したクラスであるテンプレートを使って "ArrayList型のオブジェクトを型テンプレートに変換できない"というエラーが出ます。 – theRealOne

関連する問題