2016-07-02 9 views
0

私はfirebaseでいくつかの文字列を取り出しています。これらはすべて'imageUID'タグの下に保存され、このimageUIDを使って画像を表示します。ここでFirebaseDatabaseから文字列をフェッチしてループします。の仕方?

は、私はそれを取得しています方法は次のとおりです。私は使用して示された各すべての画像を表示したい

private void doSomethingWithPicasso(String imageUIDh, ImageView target){ 
     Picasso.with(getBaseContext()) 
       .load(imageUIDh) 
       .error(R.drawable.ic_warning_black_24dp) 
       .into(target, new Callback() { 
        @Override 
        public void onSuccess() { 
         progressBar.setVisibility(View.INVISIBLE); 
        } 

        @Override 
        public void onError() { 
         Toast.makeText(getBaseContext(), "Error occurred while loading images. Please retry.", Toast.LENGTH_SHORT).show(); 
        } 
       }); 
    } 

databaseReference.addChildEventListener(new ChildEventListener() { 
    @Override 
    public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
    Map<String, String> newRequest = (Map<String, String>) dataSnapshot.getValue(); 
    imageUID = newRequest.get("imageUID"); 

    } 

    @Override 
    public void onChildChanged(DataSnapshot dataSnapshot, String s) { 

    } 

    @Override 
    public void onChildRemoved(DataSnapshot dataSnapshot) { 

    } 

    @Override 
    public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 

    } 
}); 

これは私が画像を表示するために、上記のフェッチimageUIDを使用している方法ですimagesUIDsは私のアプリケーションでデータベースから取得されましたが、起こっているのは最後のimageUIDだけが画像を表示するのに使用されていて、すべてではありません。

私はこの文字列をループし、各文字列を一つずつ表示してイメージを表示することを考えていましたが、その方法はわかりません!これを達成するためのより良い方法はありますか?

+0

を試してみてくださいここからいくつかの助けを得ることができます' ')('あなたonChildAddedで、あなたはそれを見ることができますすべてのimageUIDを出力します。これらの項目をビューに追加しようとするなら、 'onChildAdded()'の中でそれを行う必要があります。 –

+0

私はfirebaseに保存されたこれらの 'imageuids'を使って画像を表示しようとしています。問題は、最後の画像だけが毎回表示され、すべてではなくなってしまうことです。 –

+1

共有したコードに画像が表示されません。変数を設定するだけで、他の場所で使うことができます。コードがすべての画像を扱うようにするには、その使用法を* onChildAdded()に移動する必要があります。 [問題を再現する完全な、最小限の例](http://stackoverflow.com/help/mcve)を共有すると、最高のヘルプが得られることに注意してください。 –

答えて

1

あなたは `のSystem.out.println(newRequest.get( "imageUID"))場合には、この

firebase.child("key").addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for (DataSnapshot innerDataSanpShot : dataSnapshot.getChildren()) { 
      //DataSnapshot of inner Childerns 
      String username = innerDataSnapShot.child("username").getValue().toString(); 
     } 
    } 

    @Override 
    public void onCancelled(FirebaseError firebaseError) { 

    } 
}); 
+0

これはどのように役立ちますか?私はすでにFirebaseから文字列を取得していることを意味します。私はちょうど最後のものではなく、すべてのものを表示したい。 –

+0

私はこれを使ってdatasnapshotの各要素を(DataSnapshot innerDataSanpShot:dataSnapshot.getChildren()){} –

+0

のために読み込みましたが、これは 'addChildEventListener()'で実行できませんか?または 'addValueEventListener()'? –

関連する問題