Я создавал приложение, в котором оно выбирает конкретные данные из базы данных в приложение и отображает их в виде переработчика, но у меня есть проблема, которую я не знаю, как исправить, я почти уверен, что это связано с HomeFragment.java
. Пожалуйста, проверьте многострочный комментарий в конце скрипта. Я добавлю GitHub Repo, потому что я не думаю, что это ошибка одного файла.
Извините за боль и страдания, с которыми вы можете столкнуться заранее из-за своей расплывчатости, но я не знаю, как сказать это лучше.
BlogRecyclerAdapter.Java: https://pastebin.com/39G2mEW5
HomeFragment.Java: https://pastebin.com/YmKs5QUJ
Благодарю вас!
РЕПО: https://github.com/hjdaboss123/BlindNews
Путь к HomeFragment.javaBlind:News/app/src/main/java/com/blindnews/kimh2/blindnews
РЕДАКТИРОВАТЬ1: Добавлена вставка для кода на Recycler Adapter и HomeFragment
Это не полное решение проблемы, но в комментариях мы выяснили проблему, которая заключалась в том, что OP использовал Firestore
для получения данных из Realtime database
.
Изменить это во фрагменте -
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);
blog_list = new ArrayList<>();
blog_list_view = view.findViewById(R.id.blog_list_view);
blogRecyclerAdapter = new BlogRecyclerAdapter(blog_list);
blog_list_view.setLayoutManager(new LinearLayoutManager(container.getContext()));
blog_list_view.setAdapter(blogRecyclerAdapter);
firebaseFirestore = FirebaseFirestore.getInstance();
firebaseFirestore.collection("articles").addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(QuerySnapshot documentSnapshots, FirebaseFirestoreException e) {
for (DocumentChange doc : documentSnapshots.getDocumentChanges()) {
if (doc.getType() == DocumentChange.Type.ADDED) {
BlogPost blogPost = doc.getDocument().toObject(BlogPost.class);
blog_list.add(blogPost);
}
}
Log.d("HomeFragment", "onCreateView: " + blog_list.size());
//Send updated list to adapter.
blogRecyclerAdapter.updatePosts(blog_list);
}
});
return view;
}
Обработать обновленный список внутри адаптера -
public void updatePosts(List<BlogPost> blogPostList) {
//if you want to update the whole list. If you want to append, List has addAll method I think and use it with notifyItemRangeInserted for better performance.
this.blog_list = blogPostList;
notifyDataSetChanged();
}