Это мой первый Android-проект. Я работаю над приложением для отслеживания курсов в программе для получения степени (это проект для курса, который я беру). Я установил RecyclerView внутри фрагмента. В какой-то момент загруженные элементы больше не отображались. Это работало ранее. Я только внес некоторые изменения в другие части приложения, но не внес изменения в эту часть. Я не вижу причин, чтобы эти элементы не отображались. Я чувствую, что проблема началась после того, как я нажал «Установить» в обновлении эмулятора, которое предложила Android Studio. Я подозреваю, что обновление вызывает проблему, но я точно не знаю.
Ниже приведен фрагмент кода из моего фрагмента. Я скачал базу данных SQLite и подтвердил, что course.getTermId()
соответствует selectectTerm.getTermId()
для 4 элементов. Когда я открываю фрагмент, я вижу всплывающее сообщение с надписью «4 загруженных курса», поэтому я знаю, что проблема здесь не в моей логике. Я попытался вставить adapter.notifyDataSetChanged();
и recyclerView.invalidate();
в пустую строку прямо перед тостом, но элементы по-прежнему не отображаются. Я проверил свой макет, чтобы убедиться, что RecyclerView правильно настроен и закреплен. Я явно что-то упускаю, но я просто не вижу этого. Я также подтвердил, что в моем CourseFlatAdapter
нет логических ошибок. Никакие исключения не напечатаны в Logcat. Кто-нибудь видит, что мне нужно сделать, чтобы это исправить?
RecyclerView recyclerView = getView().findViewById(R.id.recyclerCourses);
recyclerView.setLayoutManager(new LinearLayoutManager(this.getContext()));
recyclerView.setHasFixedSize(true);
CourseFlatAdapter adapter = new CourseFlatAdapter();
recyclerView.setAdapter(adapter);
courseViewModel = ViewModelProviders.of(this).get(CourseViewModel.class);
courseViewModel.getAllCourses().observe(this, new Observer<List<Course>>() {
@Override
public void onChanged(List<Course> courses) {
ArrayList<Course> filteredCourseList = new ArrayList<>();
for(Course course : courses){
if(course.getTermId() == selectectTerm.getTermId()){
filteredCourseList.add(course);
}
}
adapter.setCourses(filteredCourseList);
Toast.makeText(ViewTermFragment.this.getContext(), filteredCourseList.size() + " Courses loaded", Toast.LENGTH_SHORT).show();
}
});