I have a RecyclerView set up which should display a list of movies. The thing is that I get the data after I made an API call. So my question is: How am I able to set the Data after the onCreate method of my Activity?
// Fragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_movie_overview, container, false);
mRecyclerView = (RecyclerView) rootView.findViewById(R.id.recycler_view);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(getContext());
mRecyclerView.setLayoutManager(mLayoutManager);
movieOverviewPresenter.loadMovies();
return rootView;
}
@Override
public void showMovie(List<Movie> movies) {
mAdapter = new MovieOverviewAdapter(movies);
mRecyclerView.setAdapter(mAdapter);
}
// Presenter
@Override
public void loadMovies() {
retrofit.create(MovieService.class).getPopularMovies("API_KEY").subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.unsubscribeOn(Schedulers.io())
.subscribe(new Observer<Result>() {
@Override
public void onCompleted() {
Log.i("Request", "Success!");
}
@Override
public void onError(Throwable e) {
Log.d("Request", "Error: " + e);
}
@Override
public void onNext(Result result) {
mView.showMovie(result.getResults());
}
});
}