Android 使用FirebaseUI从Firebase数据库加载图像
我目前无法加载已上载到Firebase存储并将URL保存到Firebase数据库的图像。我正在使用Firebase UI和Glide库加载图像。我找到了,下面是我的代码:Android 使用FirebaseUI从Firebase数据库加载图像,android,firebase-realtime-database,firebase-storage,android-glide,Android,Firebase Realtime Database,Firebase Storage,Android Glide,我目前无法加载已上载到Firebase存储并将URL保存到Firebase数据库的图像。我正在使用Firebase UI和Glide库加载图像。我找到了,下面是我的代码: Query query = FirebaseDatabase.getInstance() .getReference() .child("Students") .limitToLast(50); FirebaseRecyclerOptions&
Query query = FirebaseDatabase.getInstance()
.getReference()
.child("Students")
.limitToLast(50);
FirebaseRecyclerOptions<Students> options =
new FirebaseRecyclerOptions.Builder<Students>()
.setQuery(query, Students.class)
.build();
FirebaseAdapter = new FirebaseRecyclerAdapter<Students, StudentsHolder>(options) {
@NonNull
@Override
public StudentsHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_students, parent, false);
return new StudentsHolder(view);
}
@Override
protected void onBindViewHolder(@NonNull StudentsHolder holder, int position, @NonNull final Students model) {
holder.setName(model.getName());
holder.setPrice(model.getPrice());
holder.setImage(model.getImages(), getApplicationContext());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), model.getName(), Toast.LENGTH_SHORT).show();
}
});
}
};
mRecycerView.setAdapter(FirebaseAdapter);
}
这是StudentsHolder.class:
public class StudentsHolder extends RecyclerView.ViewHolder {
TextView nameTV;
TextView priceTV;
ImageView imageIV;
public StudentsHolder(View itemView) {
super(itemView);
nameTV = itemView.findViewById(R.id.name);
priceTV = itemView.findViewById(R.id.price);
imageIV = itemView.findViewById(R.id.image);
}
public void setName(String studentName) {
nameTV.setText(studentName);
}
public void setPrice(String studentPrice) {
priceTV.setText(studentPrice);
}
public void setImages(String image, Context context) {
StorageReference storageReference = FirebaseStorage.getInstance().getReference().child("Students").child(24680).child(image); // this is just an example
Glide.with(context).load(storageReference).into(imageIV);
}
以下是Firebase数据库的外观:
我想知道这是我从Firebase数据库获取图像URL的方式吗?我见过将addValueEventListener与onDataChange和onCancelled一起使用的解决方案,但这有点慢加载我的数据 什么错误?
image
值看起来无效,因为在https:
之后缺少/
。谢谢,实际上URL是可以的,这只是一个例子,我忘了写//。错误如下:E/StorageException:StorageException已发生。对象在位置处不存在。代码:-13010 HttpResult:404无法打开结果流。java.io.IOException:无法打开结果流。
public class StudentsHolder extends RecyclerView.ViewHolder {
TextView nameTV;
TextView priceTV;
ImageView imageIV;
public StudentsHolder(View itemView) {
super(itemView);
nameTV = itemView.findViewById(R.id.name);
priceTV = itemView.findViewById(R.id.price);
imageIV = itemView.findViewById(R.id.image);
}
public void setName(String studentName) {
nameTV.setText(studentName);
}
public void setPrice(String studentPrice) {
priceTV.setText(studentPrice);
}
public void setImages(String image, Context context) {
StorageReference storageReference = FirebaseStorage.getInstance().getReference().child("Students").child(24680).child(image); // this is just an example
Glide.with(context).load(storageReference).into(imageIV);
}