RecyclerView элементы не отображаются в моей основной деятельности - PullRequest
0 голосов
/ 16 апреля 2020

Я создаю приложение чата, в котором есть функция публикации. Когда я создаю сообщение в NewPostActivity, изображение и текст загружаются (потому что я вижу их в дереве базы данных firebase), но проблема в том, что в MainActivity ничего не отображается который должен отображать мои сообщения.

Я использовал Firebase UI для Rv, но я не уверен, что проблема заключается в 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);
}

1 Ответ

0 голосов
/ 16 апреля 2020

Некоторые части вашего кода не отображаются, так как я не вижу снимок экрана с вашей базой данных. Не знаю, дам ли я правильный ответ, но, очевидно, вам нужно начать слушать базу данных. прежде чем вы получите данные с помощью Firebase UI.

Итак, перед этим:

mBlogList.setAdapter(firebaseRecyclerAdapter);

Добавьте это:

firebaseRecyclerAdapter.startListening();

См. это в узнайте больше о том, как настроить пользовательский интерфейс Firebase.

...