#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;
}
Мне действительно нужна ваша помощь…
Я застрял здесь на несколько дней…
Спасибо……
Комментарии:
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 по-прежнему пуст..