Firebase RealTime База данных бесконечная пагинация прокрутки снизу в Recyclerview - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть канал, который отображает изображения из базы данных Firebase в реальном времени, но по мере добавления новых изображений пользовательский интерфейс становится очень медленным и не отвечает, поэтому я пытаюсь добавить нумерацию страниц для загрузки сообщений, когда пользователи прокручивают страницу вниз. RecyclerView. Я хочу что-то вроде домашней страницы Instagram.

Вот мой фрагмент кода:

public class HomeFragment extends Fragment {
//POSTS
private RecyclerView recyclerViewPosts;
private PostAdapter postAdapter;
private List<Post> postLists;
private List<String> followingList;
private Context mContext;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                 Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);

//POSTS
recyclerViewPosts = view.findViewById(R.id.recycler_view_posts);
recyclerViewPosts.setHasFixedSize(true);
final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
linearLayoutManager.setReverseLayout(true);
linearLayoutManager.setStackFromEnd(true);
recyclerViewPosts.setLayoutManager(linearLayoutManager);
postLists = new ArrayList<>();
postAdapter = new PostAdapter(getContext(), postLists);
recyclerViewPosts.setAdapter(postAdapter);
checkFollowing();

return view;
}

private void checkFollowing() {
    followingList = new ArrayList<>();
    DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Follow")
            .child(FirebaseAuth.getInstance().getCurrentUser().getUid())
            .child("following");

    reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            followingList.clear();
            for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                followingList.add(snapshot.getKey());
            }
            readPosts();
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

private void readPosts() {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Posts");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
postLists.clear();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
Post post = snapshot.getValue(Post.class);
postLists.add(post);
}
postAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...