2016-12-27 8 views
0

これは超まっすぐであれば謝罪先行ので、私は、Javaのに非常に新しいです。Android:Firebase Datasnapshotをループし、クラスレベルの配列リストにキーを格納する方法は?

私はFirebaseデータベースをループに同点とArrayListの中にすべての子供のキーセットを格納しています。ここで

コードの短いバージョンです:私は(「アプリケーション情報真ん中」)ログインすると

public class MainActivity extends AppCompatActivity { 

private DatabaseReference mRefEvents; 
private List<String> newArray; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mRefEvents = FirebaseDatabase.getInstance().getReferenceFromUrl("https:***"); 
    newArray = new ArrayList<String>(); 


    mRefEvents.addValueEventListener(new ValueEventListener() 
    { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) 
     { 
      for (DataSnapshot child : dataSnapshot.getChildren()) 
      { 
       for (DataSnapshot grandChild : child.getChildren()) 
       { 
        newArray.add(grandChild.getKey()); 
       } 
      } 
      Log.i("App info middle", newArray.toString()); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) 
     { 
     } 
    }); 

    Log.i("App info end", newArray.toString()); 
} 
} 

NEWARRAY addValueEventListenerメソッド内で、私は私が必要とする正確な値を取得します。しかし、下の2番目のログ( "App info end")は私に空の配列を与え、ArrayList newArrayにキーを格納しません。

私は何かシンプルなものが欠けていると確信していますが、どんな提案も高く評価されます。ありがとう!

答えて

0

あなたが一度にすべてを実行しているようにこれが見えます。リスナーが非同期で動作するので、私はあなたがリスナー「アプリケーション情報中」でログインをヒットしている前に、あなたは下の「アプリケーション情報エンド」でログをヒットしていることを想像してみてください。別の方法で、またはボタンをクリックした後に「App info End」を実行すると、配列が入力されているはずです。このすべてをお伝えいただいた上で、Consoleに出力を投稿してApp Info MiddleがApp info Middleの前にヒットしていることを確認できますか?

+1

あなたはアレクサンダー絶対的に正しかったです。ここにコンソール出力があります –

+1

12-26 20:02:13.175 8247-8247/com.example.kaznaur.simafirebasetrial I/App info end:[] 12-26 20:02:14.259 8247-8247/com.example kaznaur.simafirebasetrial I/Appインフォメーションミドル:[Debates、Speach、Bachelor、Housewives、Voice、Football] 12-26 20:02:20.760 8247-8247/com.example.kaznaur.simafirebasetrial I/App info buttonClick:[議論[ディスカッション、スピーチ、学士、主婦、ボイス、サッカー] 12-26 20:02:30.311 8247-8247/com.example.kaznaur.simafirebasetrial I/App info buttonClick: –

+0

Firebaseを使用しているときに私は最初に私を引き離していました。あなたのためにそれを圧延している喜んで。 –

関連する問題