Android 如何从Firebase存储中获取上载的图像
我一直在youtube上关注这一点,了解如何上传和检索图像。一切都很顺利,直到我看到你展示图片的那部分。我的图像没有显示。我没有收到任何错误或警告消息,我只是在运行我的应用程序时收到一个空白页面。下面是我的代码。提前谢谢Android 如何从Firebase存储中获取上载的图像,android,firebase,firebase-realtime-database,firebase-storage,Android,Firebase,Firebase Realtime Database,Firebase Storage,我一直在youtube上关注这一点,了解如何上传和检索图像。一切都很顺利,直到我看到你展示图片的那部分。我的图像没有显示。我没有收到任何错误或警告消息,我只是在运行我的应用程序时收到一个空白页面。下面是我的代码。提前谢谢 //UsersAcivity class private RecyclerView recyclerView; private UploadAdapter uploadAdapter; private DatabaseReference
//UsersAcivity class
private RecyclerView recyclerView;
private UploadAdapter uploadAdapter;
private DatabaseReference dbReference;
private List<UploadModel> uploads;
FirebaseStorage firebaseStorage;
StorageReference storageR;
private ImageView imageView;
FirebaseAuth firebaseAuth;
FirebaseUser firebaseUser;
FirebaseDatabase firebaseDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
overridePendingTransition(R.anim.slide_right, R.anim.slide_left);
uploads = new ArrayList<>();
mAdapter = new ImageAdapter(getApplicationContext(), uploads);
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(mAdapter);
uploadAdapter.notifyDataSetChanged();
dbReference = FirebaseDatabase.getInstance().getReference("Users");
String userid = FirebaseAuth.getInstance().getCurrentUser().getUid();
firebaseStorage = FirebaseStorage.getInstance();
storageR = firebaseStorage.getReference();
firebaseUser = firebaseAuth.getInstance().getCurrentUser();
firebaseDatabase.getInstance().getReference();
dbReference.orderByChild(userid).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot postsnapshot : dataSnapshot.getChildren()) {
UploadModel uploadModel = postsnapshot.getValue(Upload.class);
Uploads.add(uploadModel);
}
uploadAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(UsersActivity.this, databaseError.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
}
//UploadModel class
public class UploadModel {
private String image;
public UploadModel(){
//Empty constructor needed
}
public UploadModel (String imageUrl){
images=imageUrl;
}
public String getImageUrl() {
return image;
}
public void setImageUrl(String image) {
this.image = image;
}
}
//UsersAcivity类
私人回收站;
专用上传适配器上传适配器;
私有数据库引用dbReference;
私人名单上传;
火基存储火基存储;
存储器;参考存储器;
私人影像视图;
FirebaseAuth FirebaseAuth;
FirebaseUser FirebaseUser;
FirebaseDatabase FirebaseDatabase;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u NOSENSOR);
覆盖转换(右动画幻灯片,左动画幻灯片);
uploads=新建ArrayList();
mAdapter=新的ImageAdapter(getApplicationContext(),上载);
recyclerView=findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(新的LinearLayoutManager(本));
recyclerView.setAdapter(mAdapter);
uploadAdapter.notifyDataSetChanged();
dbReference=FirebaseDatabase.getInstance().getReference(“用户”);
字符串userid=FirebaseAuth.getInstance().getCurrentUser().getUid();
firebaseStorage=firebaseStorage.getInstance();
storageR=firebaseStorage.getReference();
firebaseUser=firebaseAuth.getInstance().getCurrentUser();
firebaseDatabase.getInstance().getReference();
dbReference.orderByChild(userid).addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
对于(DataSnapshot postsnapshot:DataSnapshot.getChildren()){
UploadModel UploadModel=postsnapshot.getValue(Upload.class);
Uploads.add(uploadModel);
}
uploadAdapter.notifyDataSetChanged();
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
Toast.makeText(UsersActivity.this,databaseError.getMessage(),Toast.LENGTH_LONG.show();
}
});
}
}
//上载模型类
公共类上传模型{
私有字符串图像;
公共上传模型(){
//需要空构造函数
}
公共上载模型(字符串imageUrl){
images=imageUrl;
}
公共字符串getImageUrl(){
返回图像;
}
公共void setImageUrl(字符串图像){
这个图像=图像;
}
}
上载适配器类
public class UploadAdapter extends RecyclerView.Adapter<UploadAdapter.ViewHolder>{
private Context ctext;
private List<Upload> list;
public UploadAdapter(Context context,List<Upload> uploads){
ctext = context;
list = uploads;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View V = LayoutInflater.from(ctext).inflate(R.layout.cardview, parent, false);
return new ViewHolder(V);
}
@Override
public void onBindViewHolder(@NonNull ImageViewHolder holder, int position) {
Upload uploadCurrent=list.get(position);
Picasso.get().load(uploadCurrent.getImageUrl()).fit().centerCrop().into(holder.imageView);
}
@Override
public int getItemCount() {
return list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
public View view;
public ViewHolder(@NonNull View itemView) {
super(itemView);
imageView=itemView.findViewById(R.id.imageview);
}
}
}
公共类UploadAdapter扩展了RecyclerView.Adapter{
私有上下文文本;
私人名单;
公共上载适配器(上下文上下文、列表上载){
ctext=上下文;
列表=上传;
}
@非空
@凌驾
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType){
视图V=布局更平坦。从(ctext)。充气(R.layout.cardview,父视图,false);
返回新的视图持有者(V);
}
@凌驾
public void onBindViewHolder(@NonNull ImageViewHolder,int位置){
Upload uploadCurrent=list.get(位置);
Picasso.get().load(uploadCurrent.getImageUrl()).fit().centerCrop().into(holder.imageView);
}
@凌驾
public int getItemCount(){
返回list.size();
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
公众观点;
公共视图持有者(@NonNull View itemView){
超级(项目视图);
imageView=itemView.findViewById(R.id.imageView);
}
}
}
由于您提供的路径,您无法从Firebase实时数据库获得任何响应
dbReference.child("LoqCOxqzhpN3puCWwhYDtHJVXqg2").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot postsnapshot : dataSnapshot.getChildren()) {
String imageUrl= (String) postsnapshot.child("ImageUrl").getValue();
Uploads.add(imageUrl);
}
uploadAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(UsersActivity.this, databaseError.getMessage(), Toast.LENGTH_LONG).show();
}
});
您的
orderByChild()
在用户下查找id。请发布您的数据库结构,您的youtube教程链接为invalid@Ashish我发布了我的数据库结构,我修复了链接,我刚刚修复了它,但现在我的应用程序崩溃了,我没有收到任何错误。我调试了应用程序,它显示com.google.firebase.database.DatabaseException:在运行应用程序之前,无法将java.lang.String类型的对象转换为com.myapp.squirreforbusiness.uploadmodel类型,我在列表中收到错误消息,说明无法应用于(java.lang.String)导致问题的行?这一个上载.add(imageUrl);更改其声明:私有列表上传代码>在每个位置