0

Ich habe Firebase-Benutzer und die Posts, die sie getan haben. Ich möchte die Post-Bild-URL aus dem Post erhalten, sie herunterladen und in einer Gridview anzeigen.Wie können Sie Firebase-Fotos in der Gridview anzeigen?

Dies ist mein Code:

public class Profile extends Fragment { 


    private CircleImageView mprofilePic; 
    private TextView mUsername, mBio; 
    private GridView mGridView; 

    private Uri mImageUri = null; 
    private FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser(); 
    private StorageReference mStorageImage; 
    private DatabaseReference mdatabaseUsers = FirebaseDatabase.getInstance().getReference().child("Users"); 


    private FirebaseAuth mAuth; 
    private FirebaseUser mCurrentUser; 
    private DatabaseReference userposts; 

    private static final int GALLERY_REQUEST = 1; 

    public static Profile newInstance() { 
    return new Profile(); 
    } 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View profileView = inflater.inflate(R.layout.fragment_profile, container, false); 

    mAuth = FirebaseAuth.getInstance(); 
    mCurrentUser = mAuth.getCurrentUser(); 
    userposts = FirebaseDatabase.getInstance().getReference().child("Users").child(mCurrentUser.getUid()).child("posts"); 


    mprofilePic = (CircleImageView) profileView.findViewById(R.id.profile_picture); 
    mUsername = (TextView) profileView.findViewById(R.id.profile_username); 
    mBio = (TextView) profileView.findViewById(R.id.profile_bio); 

    mGridView = (GridView) profileView.findViewById(R.id.gridview); 


    mdatabaseUsers.child(firebaseUser.getUid()).child("image") 
     .addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      String imageUrl = dataSnapshot.getValue().toString(); 
      Glide.with(getContext()).load(imageUrl).into(mprofilePic); 
      //mprofilePic.setImageURI(Uri.parse(imageUrl)); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
     }); 
    mdatabaseUsers.child(firebaseUser.getUid()).child("Name").addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
     String username = dataSnapshot.getValue().toString(); 
     mUsername.setText(username); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 


    return profileView; 
    } 

} 

this is the firebase database

Was ich brauche, ist der aktuelle Benutzer zu erhalten und das Kind (Beiträge) und das Kind (Bild), dann laden Sie es und es ausdrückte erhalten in die Rasteransicht und renne zum nächsten Post und erhalte das zweite Post-Image und so weiter.

Irgendwelche Vorschläge? Vielen Dank!

Antwort

0

1. Deklarieren diese

Firebase.setAndroidContext(this); 
Firebase ref = new Firebase(YOUR_FIREBASE_URL); 

2. Sie können mit addChildEventListener

ref.child("Users/w3.....") 
       .child("posts") 
       .addChildEventListener(new ChildEventListener() { 
        @Override 
        public void onChildAdded(DataSnapshot snapshot, String s) { 
         Map<String, Object> value = (Map<String, Object>) snapshot.getValue(); 
         String img = value.get(Constants.chnl_msg).toString(); // your image url 
        } 

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

        } 

        @Override 
        public void onChildRemoved(DataSnapshot dataSnapshot) { 
        } 

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

        @Override 
        public void onCancelled(FirebaseError firebaseError) { 
        } 
       }); 

3. oder addListenerForSingleValueEvent

ref.child("Users/w3.....") 
       .child("posts").addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       Map<String, Object> value = (Map<String, Object>) dataSnapshot.getValue(); 
       String img = value.get(Constants.chnl_msg).toString(); // your image url 
      } 

      @Override 
      public void onCancelled(FirebaseError firebaseError) { 

      } 
     }); 
Verwandte Themen