如何从Firestore的URL显示图像

时间:2019-08-11 14:31:16

标签: android image android-recyclerview google-cloud-firestore

我可以使用Realtime Database进行正确处理,但是我去了Cloud FireStore,现在遇到了一些问题。我想显示通过Firestore的下载URL在Firestore中的图像。我正在使用FirestoreRecyclerAdapter,我想在RecyclerView中填充imageView。

我尝试以与实时数据库相同的方式进行操作,但是出现错误,但是这次我收到一个错误消息,告诉我NumberFormatException:对于输入字符串:

@Override
protected void onBindViewHolder(@NonNull NoteHolder holder, int p, 
   @NonNull promo_one_data promo_one) {
    holder.produk_product.setText(promo_one.getProduct());
    holder.produk_discription.setText(promo_one.getDiscription());
    holder.produk_discription_two.setText(promo_one.getDiscription_two());
    holder.produk_size.setText(promo_one.getSize());
    holder.produk_product_two.setText(promo_one.getProduct_two());
    holder.produk_price.setText(promo_one.getPrice());
    holder.produk_department.setText(promo_one.getDepartment());
    if ("1".equals(holder.produk_department.getText().toString())) {
        holder.itemView.setBackgroundColor(Color.parseColor("#FFCDD2"));
    }  else if ("2".equals(holder.produk_department.getText().toString())) {
        holder.itemView.setBackgroundColor(Color.parseColor("#FFA6AF"));
    } else {
            holder.itemView.setBackgroundColor(Color.WHITE);
        }
    holder.produk_image.setImageResource(Integer.parseInt(promo_one.getImage()));
    Picasso.get().load(promo_one.getImage()).into(holder.produk_image);

}

@NonNull
@Override
public NoteHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_promo, parent, false);
    return new NoteHolder(v);
}

如何在Cloud Firestore的recyclerView中显示图像。它向我显示“ java.lang.NumberFormatException:对于输入字符串:...(此处的URL),我可以收集这意味着该字符串要很长的时间才能转换为int以填充imageView。如何执行此操作,或者有没有办法解决?或者甚至如何缩短URL,或者有没有办法避免使用Picasso?

1 个答案:

答案 0 :(得分:2)

您的问题是这一行:

holder.produk_image.setImageResource(Integer.parseInt(promo_one.getImage()));

您不应该尝试在此处将图片的网址解析为整数,下一行使用毕加索:

Picasso.get().load(promo_one.getImage()).into(holder.produk_image);

应为您处理图像加载。