RecyclerView не отображает информацию из базы данных firebase

#android #android-recyclerview

#Android #android-recyclerview

Вопрос:

Мой recyclerview не отображает никакой информации. Recyclerview работает нормально, но информации нет, она полностью пуста. Также макет пустой…

В logcat нет ошибки…

Я попытался выполнить следующее:

1] установите высоту в xml для переноса содержимого.

2] установите notifySetChangeListener.

3] реализовать startListening.

это были большинство ответов на тот же вопрос, которые задавали другие люди, но даже после того, как все это было реализовано, RecyclerView по-прежнему пуст.

Моя основная активность:

           @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

         postList = (RecyclerView) findViewById(R.id.all_users_post_list);
    postList.setHasFixedSize(true);
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getApplicationContext());
    linearLayoutManager.setReverseLayout(true);
    linearLayoutManager.setStackFromEnd(true);
    postList.setLayoutManager(linearLayoutManager);

     DisplayAllUsersProfile();}


      private void DisplayAllUsersProfile() {

    FirebaseRecyclerOptions<postsRecyclerView> options =
            new FirebaseRecyclerOptions.Builder<postsRecyclerView>()
                    .setQuery(PostsRef  , postsRecyclerView.class)
                    .build();

    FirebaseRecyclerAdapter<postsRecyclerView,PostsViewHolder>
            firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<postsRecyclerView, PostsViewHolder>(options) {

        @NonNull
        @Override
        public PostsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.all_posts_layout, parent, false);
            PostsViewHolder viewHolder = new PostsViewHolder(view);
            return viewHolder;
        }

        @Override
        protected void onBindViewHolder(@NonNull final PostsViewHolder holder, int position, @NonNull postsRecyclerView model) {

            holder.textUsername.setText(model.getUsername());
            holder.textContent.setText(model.getContent());
            holder.textTitle.setText(model.getTitle());
            holder.textDate.setText(model.getDate());
            holder.textTime.setText(model.getTimestamp());

            holder.LikePostButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    LikeChecker  =  true;
                    LikesRef.addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot snapshot) {

                        }

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

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



public class PostsViewHolder extends RecyclerView.ViewHolder {

    TextView textUsername, textTitle, textContent, textDate, textTime;
    TextView DisplayNoOfLikes;
    ImageButton LikePostButton, CommentPostButton;

    public PostsViewHolder(@NonNull View itemView) {
        super(itemView);

        LikePostButton = (ImageButton) itemView.findViewById(R.id.like_button);
        CommentPostButton = (ImageButton) itemView.findViewById(R.id.comment_button);
        DisplayNoOfLikes = (TextView) itemView.findViewById(R.id.display_no_of_likes);

        textUsername = itemView.findViewById(R.id.post_user_name);
        textTitle = itemView.findViewById(R.id.post_title);
        textContent = itemView.findViewById(R.id.post_article);
        textDate = itemView.findViewById(R.id.post_date);
        textTime = itemView.findViewById(R.id.post_time);
    }
}
  

Мой класс модели:

       public class postsRecyclerView  {

String username;
String content;
String title;
String date;
String timestamp;

public postsRecyclerView(String username, String content, String title, String date, String timestamp) {
    this.username = username;
    this.content = content;
    this.title = title;
    this.date = date;
    this.timestamp = timestamp;
}

public postsRecyclerView() {
}

public String getTimestamp() {
    return timestamp;
}

public void setTimestamp(String timestamp) {
    this.timestamp = timestamp;
}

public String getDate() {
    return date;
}

public void setDate(String date) {
    this.date = date;
}

public String getContent() {
    return content;
}

public void setContent(String content) {
    this.content = content;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}
  

Моя база данных firebase:
База данных Firebase

Мне действительно нужна ваша помощь…

Я застрял здесь на несколько дней…

Спасибо……

Комментарии:

1. Получаете ли вы какие-либо сообщения / ошибки в logcat?

2. … И можете ли вы опубликовать пример структуры вашей базы данных?

3. ранее я не получал сообщение об ошибке, но теперь я ее получаю..

4. Еще один вопрос :), является ли узел «Заметки» местом, где вы храните записи?

5. ДА. «Notes» — это место, где я сохраняю сообщения, а PostsRef — PostsRef = FirebaseDatabase.getInstance().getReference().child («Заметки»);

Ответ №1:

попробуйте использовать

 LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
  

Комментарии:

1. Это был единственный метод, который я использовал раньше, но затем в нескольких вопросах было написано, чтобы изменить ‘это ‘yo getApplicationContext’, но это не сработало в обоих направлениях

2. вызывается ли метод onBindViewHolder?

Ответ №2:

Чтобы запустить его, вы можете попробовать это решение:

 PostsRef = FirebaseDatabase.getInstance().getReference().child("Notes").child("..."); 
// ... is for those Ids of notes
  

Также я думаю, что startListening() это должно быть до setAdapter(...)

 firebaseRecyclerAdapter.startListening();
postList.setAdapter(firebaseRecyclerAdapter);
firebaseRecyclerAdapter.notifyDataSetChanged();
  

Комментарии:

1. Спасибо… Но при использовании этого метода ошибка теперь устранена, но recyclerview по-прежнему пуст..