Заполните FirebaseRecyclerView во фрагменте - PullRequest
1 голос
/ 26 октября 2019

Я пытаюсь заполнить FirebaseRecyclerView данными из базы данных Firebase в реальном времени в рамках действия фрагмента. Проблема заключается в том, что при компиляции и запуске кода на устройстве отсутствует визуальный recyclerView. Глядя на другие примеры онлайн-реализации Firebase RecyclerView, мой код выглядит так, как будто он должен работать, но не может понять, почему.

PostFragment.java 

    public class NotificationsFragment extends Fragment {

    private NotificationsViewModel notificationsViewModel;
    private FirebaseAuth mAuth = FirebaseAuth.getInstance();
    private DatabaseReference userDBRef = FirebaseDatabase.getInstance().getReference();

    private RecyclerView recyclerView;

    private FirebaseRecyclerAdapter<Post, PostHolder> firebaseRecyclerAdapter;

    public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        notificationsViewModel =
                ViewModelProviders.of(this).get(NotificationsViewModel.class);
        View root = inflater.inflate(R.layout.fragment_notifications, container, false)


        recyclerView = root.findViewById(R.id.item_list);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false));
        Query postQuery = userDBRef.child(mAuth.getCurrentUser().getUid()).child("posts");
        mDatabase = FirebaseDatabase.getInstance().getReference().child("posts");
        FirebaseRecyclerOptions<Post> firebaseRecyclerOptions = new FirebaseRecyclerOptions.Builder<Post>()
                .setQuery(postQuery, Post.class)
                .build();

        firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Post, PostHolder>(firebaseRecyclerOptions) {
            @Override
            protected void onBindViewHolder(@NonNull PostHolder postHolder, int position, @NonNull Post post) {
                TextView titleTv = postHolder.titleTextView;
                titleTv.setText(post.getPostTitle());
               // postHolder.titleTextView.setText(post.getPostTitle());
                //postHolder.setPost(post);
            }

            @Override
            public PostHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
                PostHolder myPostHolder = new PostHolder(view);
                return myPostHolder;
            }

        };
        recyclerView.setItemAnimator(new DefaultItemAnimator());    
        recyclerView.setAdapter(firebaseRecyclerAdapter);
        return root;
    }

    @Override
    public void onStart() {
        super.onStart();
        firebaseRecyclerAdapter.startListening();
    }

    @Override
    public void onStop() {
        super.onStop();

        if (firebaseRecyclerAdapter!= null) {
            firebaseRecyclerAdapter.stopListening();
        }
    }

    private class PostHolder extends RecyclerView.ViewHolder {
        private TextView titleTextView, descTextView;

        PostHolder(View itemView) {
            super(itemView);
            titleTextView = itemView.findViewById(R.id.row_item);
            descTextView = itemView.findViewById(R.id.postdesc);
        }

        void setPost(Post userPost) {
            String postTitle = userPost.getPostTitle();
            titleTextView.setText(postTitle);
            String desc = userPost.getDescription();
            descTextView.setText(desc);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...