Я загружаю свои данные, используя AsyncTask
в моем ViewModel
, но когда я пытаюсь наблюдать данные внутри моего фрагмента, я получаю исключение:
Причина: java.lang.ClassCastException: MainFragmentне может быть приведен к android.arch.lifecycle.LifecycleOwner
Это моя ViewModel:
private MutableLiveData<ArrayList<Song>> songs;
public LiveData<ArrayList<Song>> getSongs() {
if (songs == null) {
songs = new MutableLiveData<ArrayList<Song>>();
loadSongs();
}
return songs;
}
@SuppressLint("StaticFieldLeak")
private void loadSongs() {
new AsyncTask<Void, Void, ArrayList<Song>>() {
@Override
protected ArrayList<Song> doInBackground(Void... voids) {
ArrayList<Song> data = new ArrayList<>();
//Add songs (collapsed)
return data;
}
@Override
protected void onPostExecute(ArrayList<Song> data) {
songs.postValue(data);
}
}.execute();
}
И это мой фрагмент, где яхочу, чтобы мои данные были в моем списке:
viewModel = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);
//TODO: Fix this!
viewModel.getSongs().observe((LifecycleOwner) this, new Observer<ArrayList<Song>>() {
@Override
public void onChanged(@Nullable ArrayList<Song> songs) {
adapter = new ListViewAdapter(R.layout.songlist_customlayout, viewModel.getSongs().getValue(), getActivity());
}
});
В чем здесь проблема?