RecyclerView 项目未显示在我的 MainActivity 中

RecyclerView items not Displayed in my MainActivity

我正在构建一个具有 post 功能的聊天应用程序,当我在 NewPostActivity 中创建 post 时,图像和文本被上传(因为我可以在 firebase 数据库树中看到它们)但问题是我的 MainActivity 中没有显示任何内容,它应该显示我的 posts.

我为 Rv 使用了 Firebase UI,但我不确定问题出在 NewPostActivity 还是 MainActivity。 我尝试运行调试器查看但是没有错误或空点异常。

NewPostActivity.java

   btnPost.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startPosting();
        }
    });



}

private void startPosting() {


    progressDialog=new ProgressDialog(NewPostActivity.this);
    progressDialog.setTitle("Uploading Image");
    progressDialog.setMessage("Please Wait while we process the image");
    progressDialog.setCanceledOnTouchOutside(false);


    final String desc_val=mPostDesc.getText().toString().trim();


    if(!TextUtils.isEmpty(desc_val) && mImageUri!=null){

        progressDialog.show();
        String random_name= random();
        StorageReference filepath = storageReference.child("Blog_Images").child(random_name);
        filepath.putFile(mImageUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {

                Task<Uri> uriTask = task.getResult().getStorage().getDownloadUrl();
                while (!uriTask.isComplete());
                final Uri downloadUrl = uriTask.getResult();

                final DatabaseReference newPost = mRootRef.child("Blog").push();

                final String user_id= mCurrentUser.getUid();

                mRootRef.child("Users").child(user_id).addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {

                        newPost.child("desc").setValue(desc_val);

                        newPost.child("image").setValue(downloadUrl.toString());

                        newPost.child("user_id").setValue(user_id);
                        newPost.child("timestamp").setValue(ServerValue.TIMESTAMP);
                        newPost.child("username").setValue(dataSnapshot.child("name").getValue());
                        newPost.child("thumb_image").setValue(dataSnapshot.child("thumb_image").getValue());
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });

                progressDialog.dismiss();

                startActivity(new Intent(NewPostActivity.this,MainActivity.class));
                finish();

            }
        });



    }

}

MainActivity.java

Query conversationQuery = mDatabase.orderByChild("timestamp");
    FirebaseRecyclerOptions<Blog> options = new FirebaseRecyclerOptions.Builder<Blog>()
            .setQuery(conversationQuery, Blog.class)
            .build();
    FirebaseRecyclerAdapter<Blog, BlogViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Blog, BlogViewHolder>(options) {
        @NonNull
        @Override
        public BlogViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.post_single_layout, parent, false);
            mAuth = FirebaseAuth.getInstance();
            return new BlogViewHolder(view);
        }
        @Override
        protected void onBindViewHolder(@NonNull final BlogViewHolder viewHolder, int position, @NonNull final Blog model) {
            viewHolder.setContext(getApplicationContext());
            final String list_blog_id = getRef(position).getKey();
            viewHolder.setLikeBtns(list_blog_id);
            Query lastMessageQuery = mDatabase.child(list_blog_id).limitToLast(1);
            lastMessageQuery.addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                    viewHolder.setDesc(model.getDesc());
                    viewHolder.setImage(model.getImage());
                    viewHolder.setUsername(model.getUsername());
                    viewHolder.setStatus(model.getStatus());
                    viewHolder.setPostImage(model.getThumb_image());
                    viewHolder.setTime(model.getTimestamp());
                    userID = model.getUid();
                }
                @Override
                public void onChildChanged(DataSnapshot dataSnapshot, String s) {
                }
                @Override
                public void onChildRemoved(DataSnapshot dataSnapshot) {
                }
                @Override
                public void onChildMoved(DataSnapshot dataSnapshot, String s) {
                }
                @Override
                public void onCancelled(DatabaseError databaseError) {
                }
            });
            viewHolder.postImage.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent imageFullScreen = new Intent(getApplicationContext(), PhotoActivity.class);
                    imageFullScreen.putExtra("uid", list_blog_id);
                    imageFullScreen.putExtra("from", "RequestsFragment");
                    startActivity(imageFullScreen);
                }
            });
            viewHolder.mLikeBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    mProcessLike = true;
                    mDatabase.addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            if (mProcessLike) {
                                if (dataSnapshot.child(list_blog_id).hasChild(mAuth.getCurrentUser().getUid())) {
                                    mDatabaseLike.child(list_blog_id).child(mAuth.getCurrentUser().getUid()).removeValue();
                                    mProcessLike = false;
                                } else {
                                    mDatabaseLike.child(list_blog_id).child(mAuth.getCurrentUser().getUid()).setValue("Lliked");
                                    mProcessLike = false;
                                }
                            }
                        }
                        @Override
                        public void onCancelled(DatabaseError databaseError) {
                        }
                    });
                }
            });
        }
    };
    mBlogList.setAdapter(firebaseRecyclerAdapter);
}

你的代码有一些部分没有显示出来,也因为我没有看到你的数据库的截图我不知道我是否会给出正确的答案,但显然你需要开始听在使用 firebase UI.

获取数据之前的数据库

那么在此之前:

mBlogList.setAdapter(firebaseRecyclerAdapter);

添加这个:

firebaseRecyclerAdapter.startListening();

请参阅 this 以了解有关如何设置您的 firebase UI 的更多信息。