我无法使用FirebaseRecyclerAdapter从Firebase数据库中检索数据。

问题描述 投票:0回答:1

把我的数据添加到firebase实时数据库后,更新成功了。然后我想让我添加的所有数据显示在我的主活动中。在写完下面的代码后,我没有看到任何语法错误,但是如果我运行这个程序,我似乎无法在我的主活动中查看我的数据,而且我似乎无法理解这个错误。如果有人能帮助我,我将感激不尽。谢谢大家。

这是我的模型。


    package com.example.myapplication.Activities;
    
    public class Posts {
    
        public String date, description,fullName,postImage,profileImage,time,uid;
    
        public Posts(){
    
        }
    
        public Posts(String date, String description, String fullName, String postImage, String profileImage, String time, String uid) {
            this.date = date;
            this.description = description;
            this.fullName = fullName;
            this.postImage = postImage;
            this.profileImage = profileImage;
            this.time = time;
            this.uid = uid;
        }
    
        public String getDate() {
            return date;
        }
    
        public void setDate(String date) {
            this.date = date;
        }
    
        public String getDescription() {
            return description;
        }
    
        public void setDescription(String description) {
            this.description = description;
        }
    
        public String getFullName() {
            return fullName;
        }
    
        public void setFullName(String fullName) {
            this.fullName = fullName;
        }
    
        public String getPostImage() {
            return postImage;
        }
    
        public void setPostImage(String postImage) {
            this.postImage = postImage;
        }
    
        public String getProfileImage() {
            return profileImage;
        }
    
        public void setProfileImage(String profileImage) {
            this.profileImage = profileImage;
        }
    
        public String getTime() {
            return time;
        }
    
        public void setTime(String time) {
            this.time = time;
        }
    
        public String getUid() {
            return uid;
        }
    
        public void setUid(String uid) {
            this.uid = uid;
        }
    }

这是我的查询


     private DatabaseReference databaseReference, postRef;
        databaseReference = FirebaseDatabase.getInstance().getReference().child("users");
                postRef = FirebaseDatabase.getInstance().getReference().child("posts");


      @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Toolbar toolbar = findViewById(R.id.Maintoolbar);
            setSupportActionBar(toolbar);
            getSupportActionBar().setTitle("Home");
            recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
            recyclerView.setHasFixedSize(true);
    
            LinearLayoutManager linearLayoutManager = new 
            LinearLayoutManager(this);
            linearLayoutManager.setReverseLayout(true);
            linearLayoutManager.setStackFromEnd(true);
            recyclerView.setLayoutManager(linearLayoutManager);
    
     
    
            displayAllUserPosts();
        }

使用FirebaseRecyclerAdapter


    private void displayAllUserPosts() {
    
            FirebaseRecyclerOptions<Posts> options =
                    new FirebaseRecyclerOptions.Builder<Posts>()
                            .setQuery(postRef, Posts.class)
                            .build();
    
    
    
            firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Posts, PostViewHolder>(options) {
                @Override
                protected void onBindViewHolder(@NonNull PostViewHolder postViewHolder, int i, @NonNull Posts posts) {
    
                    postViewHolder.setDate(posts.getDate());
                    postViewHolder.setDescription(posts.getDescription());
                    postViewHolder.setFullName(posts.getFullName());
                    postViewHolder.setTime(posts.getTime());
                    postViewHolder.setPostImage(getApplicationContext(),posts.getPostImage());
                    postViewHolder.setProfileImage(getApplicationContext(), posts.getProfileImage());
                }
    
                @NonNull
                @Override
                public PostViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    
                    View view = LayoutInflater.from(parent.getContext())
                            .inflate(R.layout.all_post_layout, parent, false);
    
                    return new PostViewHolder(view);
    
                }
            };
    
            recyclerView.setAdapter(firebaseRecyclerAdapter);
    
        }
    
    
        public static class  PostViewHolder extends  RecyclerView.ViewHolder{
            View view;
    
            public PostViewHolder(@NonNull View itemView) {
                super(itemView);
                view = itemView;
            }
    
            public void setFullName(String fullName){
                TextView username = (TextView) view.findViewById(R.id.post_user_name);
                username.setText(fullName);
            }
    
            public void setProfileImage(Context context, String profileImage){
                CircleImageView profileimage = (CircleImageView) view.findViewById(R.id.post_profile_image);
                Picasso.with(context).load(profileImage).into(profileimage);
            }
    
            public void setDate( String date) {
                TextView Date = (TextView)view.findViewById(R.id.post_date);
                Date.setText("   " + date);
            }
    
            public void setTime(String time) {
                TextView Time = (TextView)view.findViewById(R.id.post_time);
                Time.setText("   " + time);
            }
    
            public void setDescription(String description) {
                TextView Description = (TextView)view.findViewById(R.id.post_description);
                Description.setText(description);
            }
    
            public void setPostImage( Context context, String postImage){
                ImageView postimage = (ImageView)view.findViewById(R.id.post_image);
                Picasso.with(context).load(postImage).into(postimage);
            }
    
        }

这是我的数据库树

posts
gjZxz9HL4IblUAcdWz788Z9AdXu118
May
202023:44
date: 
"18/May/2020"
description: 
"my first"
fullName: 
"emeka"
postImage: 
"https://firebasestorage.googleapis.com/v0/b/soc..."
profileImage: 
"https://firebasestorage.googleapis.com/v0/b/soc..."
time: 
"23:44"
uid: 
"gjZxz9HL4IblUAcdWz788Z9AdXu1"
gjZxz9HL4IblUAcdWz788Z9AdXu120
May
2020:00:55
date: 
"20/May/2020"
description: 
"I like this"
fullName: 
"emeka"
postImage: 
"https://firebasestorage.googleapis.com/v0/b/soc..."
profileImage: 
"https://firebasestorage.googleapis.com/v0/b/soc..."
time: 
":00:55"
uid: 
"gjZxz9HL4IblUAcdWz788Z9AdXu1"

如果有人能帮我,请帮我。我将感激不尽。谢谢你。

这是我得到的,当我运行的应用程序,下面的图像。请在此输入图片描述

java android-studio firebase-realtime-database recycler-adapter firebaseui
1个回答
0
投票

我找到了答案,我是用addOnCompleteListener来获取我的帖子图片的下载网址,而不是用addOnSuccesslistener。

© www.soinside.com 2019 - 2024. All rights reserved.