На самом деле я нашел решение, и я не понимаю, почему оно работает, но это связано с тем фактом, что CollegeAdapter объявлен окончательным, но я должен объявить его окончательным, в противном случае я получаю ошибку в onChanged ()
Я сделал функцию, которая добавляет элементы из CollegeAdapter в CollegeList, чтобы функция присваивала значение CollegeAdapter новому CollegeAdapter в параметре, который не является окончательным, и он работал следующим образом
вот как я это реализовал
collegeViewModel.getAllColleges().observe(this, new Observer<List<College>>() {
@Override
public void onChanged(List<College> colleges) {
//this is what happens when when data changes // the code bellow should be related to changing the view
collegeAdapter.setColleges(colleges); // getting colleges from database and assigning it to collegeadapter
addElements(collegeAdapter, collegesList);
}
});
и вот функция
public void addElements(CollegeAdapter collegeAdapter, ArrayList<String> collegesList) {
for (int i = 0; i < collegeAdapter.getItemCount(); i++) {
collegesList.add(collegeAdapter.getCollegeAt(i).getCollegeName());
}
collegeSpinner.setAdapter(adapter);
}