0

Я новичок в использовании хранилища Firebase и сталкивается с проблемами при отображении изображений в RecyclerView. Я использовал FirebaseRecyclerAdapter для отображения моих данных. URL-адрес данных и изображений хранится в базе данных Firebase. Проблема в том, что только изображение не отображается в RecyclerView.Невозможно отобразить изображение (только) в RecyclerView, хранящемся в хранилище Firebase

Любая помощь, которую вы можете предоставить мне, чтобы заставить ее работать, было бы здорово. Благодарю.

Ниже приведен код для деятельности Recycler:

public class DownloadActivity extends AppCompatActivity { 

ScaleAnimation shrinkAnim; 
private RecyclerView mRecyclerView; 
private TextView tvNoImages; 
private static final String TAG = "DownloadActivty"; 


//Getting reference to Firebase Database 
DatabaseReference database = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference childref; 
private static StorageReference mStorageRef; 

//private static final String userId = "53"; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.downlad_activtiy_layout); 
    childref=database.child("Photos").getRef(); 

    mStorageRef = FirebaseStorage.getInstance().getReference(); 
    //Initializing our Recyclerview 
    mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view); 
    tvNoImages = (TextView) findViewById(R.id.tv_no_image); 
    //scale animation to shrink floating actionbar 
    shrinkAnim = new ScaleAnimation(1.15f, 0f, 1.15f, 0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); 

    Log.i(TAG, "Set firebase adapter"); 
    FirebaseRecyclerAdapter<Image_model,ImageViewHolder> adapter = new FirebaseRecyclerAdapter<Image_model, ImageViewHolder>(
      Image_model.class, R.layout.image_item, ImageViewHolder.class, 
      //referencing the node where we want the database to store the data from our Object 
      database 
    ) 
    { 
     @Override 
     protected void populateViewHolder(ImageViewHolder viewHolder, Image_model model, int position) 
     { 
      Log.i(TAG, "Populate Image"); 
      viewHolder.bindImage(model); 
     } 
    }; 

    mRecyclerView.setAdapter(adapter); 
    mRecyclerView.setHasFixedSize(true); 
    mRecyclerView.setLayoutManager (new LinearLayoutManager(this)); 

//ViewHolder for Firebase UI 
public static class ImageViewHolder extends RecyclerView.ViewHolder{ 

    TextView tvUserName; 
    TextView tvImageName; 
    RatingBar ratingBar; 
    ImageView ivImage; 
    ImageView image; 
    View viewHolder; 
    Context mContext; 

    public ImageViewHolder(View v) { 
     super(v); 
     viewHolder=v; 
     mContext = v.getContext(); 
     } 
    public void bindImage(Image_model model) 
    { 
     tvUserName=(TextView)viewHolder.findViewById(R.id.user_name); 
     tvImageName = (TextView) viewHolder.findViewById(R.id.image_name); 
     ratingBar = (RatingBar) viewHolder.findViewById(R.id.like); 
     ivImage = (ImageView) viewHolder.findViewById(R.id.img); 

     tvUserName.setText(model.getUserName()); 
     tvImageName.setText(model.getImageName()); 
     ratingBar.setRating(model.getImageLike()); 
     Picasso.with(mContext).load(model.getImage()).into(ivImage); 
     //Glide.loadImage(model.getImage(),ivImage); 

    } 
} 
} 

И это моя модель класса

public class Image_model { 

private String UserName; 
private String ImageName; 
private String ImageUrl; 
private int ImageLike; 

public Image_model(){ 

} 
public Image_model(String UserName,String ImageName,String ImageUrl,int ImageLike){ 
    this.UserName=UserName; 
    this.ImageName = ImageName; 
    this.ImageUrl = ImageUrl; 
    this.ImageLike = ImageLike; 
} 

public String getUserName() { 
    return UserName; 
} 

public void setUserName(String UserName) { 
    this.UserName = UserName; 
} 

public String getImageName() { 
    return ImageName; 
} 

public void setImageName(String ImageName) { 
    this.ImageName = ImageName; 
} 

public String getImage() { 
    return ImageUrl; 
} 

public void setImage(String ImageUrl) { 
    this.ImageUrl = ImageUrl; 
} 

public int getImageLike() { 
    return ImageLike; 
} 

public void setImageLike(int ImageLike) { 
    this.ImageLike = ImageLike; 
} 
} 
+0

Что показывают ваши журналы? Любая причина, по которой вы не используете Glide, которая является превосходной библиотекой загрузки изображений? –

+0

Вот копия моего журнала: пропущено 38 кадров! Приложение может делать слишком много работы над своей основной нитью. Нет сеттер/поле для ImageUrl не найдено на классе hb.iart.Image_model Нет сеттер/поле для -KZQ17zHCGfv04PH2GBJ не найдено на классе hb.iart.Image_model Нет сеттер/поле для ImageLikes не найдено на классе hb.iart.Image_model Нет сеттер/поле для -KZPyuaaHsIRyLMrYboX найдено по классу hb.iart.Image_model Наполнять изображение –

+0

Я тоже попытался скользить, но я столкнулся с проблемой. @DougStevenson –

ответ

0

Я не знаю, что вы делаете внутри вашего метода bindImage. Но помните, что вы получаете и imageURL из своей модели, а не самого изображения. Я рекомендую вам использовать библиотеку Glide, чтобы установить изображение с URL-адреса и изображения. Кроме того, помните, что внутри вашей консоли Firebase вы должны использовать «URL загрузки», а не ссылку на хранилище. что-то вроде

https://firebasestorage.googleapis.com/v0/b/yourAwesomeDatabase ....

Im помощью Glide, чтобы установить мои изображения из Firebase в моем приложении, и я использую этот метод, надеется, что это поможет вам:

/** 
    * Load an image with default values and default placeholder. 
    * @param url photo Url. 
    * @param imageView target view to load the desired image. 
    */ 
    public static void loadImage(String url, ImageView imageView) { 
     Context context = imageView.getContext(); 
     ColorDrawable cd = new ColorDrawable(ContextCompat.getColor(context, R.color.app_grey)); 
     Glide.with(context) 
     .load(url) 
     .placeholder(cd) 
     .crossFade() 
     .centerCrop() 
     .into(imageView); 
    } 
+0

Я редактировал свое сообщение и добавил код для метода bindImage(). И я использую Picasso для загрузки изображений в режиме ресайклера. @Francisco Durdin Garcia –