Как сделать так, чтобы посты загружались частично и кэшировали посты с помощью Firebase в Android Studio? - PullRequest
1 голос
/ 26 июня 2019

Я сделал новостную ленту с FirebaseRecyciclerView, но проблема в том, что они загружаются сразу, а прокрутка очень медленная и запаздывающая.Я хочу добавить частичную загрузку и кеширование.Как Facebook, Twitter, Instagram и т. Д. Я пытался с Волей, но я не могу понять это.Может кто-то с большим знанием сказать мне, что является лучшим решением для моей проблемы.

Я пытался с этим ответом, но не получил никаких результатов Firebase загружает данные динамически при прокрутке

private void DisplayAllUsersPosts()
{
    Query SortPostsInDescendingOrder = PostsRef.orderByChild("counter");

    FirebaseRecyclerAdapter<Posts, PostsViewHolder> firebaseRecyclerAdapter =
            new FirebaseRecyclerAdapter<Posts, PostsViewHolder>
                    (
                            Posts.class,
                            R.layout.all_posts_layout,
                            PostsViewHolder.class,
                            SortPostsInDescendingOrder
                    )
            {
                @Override
                protected void populateViewHolder(PostsViewHolder viewHolder, Posts model, int position)
                {
                    final String PostKey = getRef(position).getKey();

                    viewHolder.setFullname(model.getFullname());
                    viewHolder.setTime(model.getTime());
                    viewHolder.setDate(model.getDate());
                    viewHolder.setDescription(model.getDescription());
                    viewHolder.setUser_thumb_image(getApplicationContext(), model.getUser_thumb_image());
                    viewHolder.setPostimage(getApplicationContext(), model.getPostimage());

                    viewHolder.setLikeButtonStatus(PostKey);

                    viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            Intent clickPostIntent = new Intent(MainActivity.this, ClickPostActivity.class);
                            clickPostIntent.putExtra("PostKey", PostKey);
                            startActivity(clickPostIntent);
                        }
                    });

                    viewHolder.CommentPostButton.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            Intent commentsIntent = new Intent(MainActivity.this, CommentsActivity.class);
                            commentsIntent.putExtra("PostKey", PostKey);
                            startActivity(commentsIntent);
                        }
                    });

                    viewHolder.LikePostButton.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            LikeChecker = true;

                            LikesRef.addValueEventListener(new ValueEventListener() {
                                @Override
                                public void onDataChange(DataSnapshot dataSnapshot) {
                                    if(LikeChecker.equals(true)){
                                        if(dataSnapshot.child(PostKey).hasChild(currentUserID)){
                                            LikesRef.child(PostKey).child(currentUserID).removeValue();
                                            LikeChecker = false;
                                        }else{
                                            LikesRef.child(PostKey).child(currentUserID).setValue(true);
                                            LikeChecker = false;
                                        }
                                    }
                                }

                                @Override
                                public void onCancelled(DatabaseError databaseError) {

                                }
                            });
                        }
                    });
                }
            };
    postList.setAdapter(firebaseRecyclerAdapter);
}
...