0

I'm using android studio and I'm trying to get a image from firebase. I dont know how to do it and I searched in web all day. I need only one pic with one name; the file will change but the name not.

So far i tried to get the uri and use Glide, but it's still not working.

I really need your help or just a guide:

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;


import com.bumptech.glide.Glide;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;



public class news_watch extends AppCompatActivity {
    public ImageView IvImg;
    public TextView TvTitle;
    public TextView TvDes;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_news_watch);
        IvImg = findViewById(R.id.IvImg);
        final FirebaseDatabase database = FirebaseDatabase.getInstance();
        final StorageReference storageReference =  FirebaseStorage.getInstance().getReference("images/");;
        TvTitle = findViewById(R.id.TvTitle);
        TvDes = findViewById(R.id.TvDes);

// ImageView in your Activity
        DatabaseReference myRef = database.getReference().child("myNews");
        ValueEventListener postListener = new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                News post = dataSnapshot.getValue(News.class);

                TvTitle.setText("a");
                TvTitle.setText(post.getTitle());
                TvDes.setText(post.getDescription());
                TvTitle.setTextSize(40);
                TvDes.setTextSize(25);
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {
                // Getting Post failed, log a message

                // ...
            }

        };
        myRef.addListenerForSingleValueEvent(postListener);
        String urlImage = storageReference.child("post.jpeg").getDownloadUrl().toString();

        Glide.with(news_watch.this)
                .load(urlImage)
                .into(IvImg);






    }
}
Frank van Puffelen
  • 565,676
  • 79
  • 828
  • 807
  • 1
    getDownloadUrl() is a task so set a addOnSuccessListener{} and inside it use glide. – Elias Fazel Feb 03 '20 at 20:31
  • What Elias commented is correct. You'll need to add a success listener to the task, as shown in the [Firebase documentation](https://firebase.google.com/docs/storage/android/download-files#download_data_via_url), and in the answer to [this question](https://stackoverflow.com/a/52652077). – Frank van Puffelen Feb 03 '20 at 20:36

0 Answers0