-1

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());
                    }
                });
    }
Ludwig Bossle
  • 367
  • 2
  • 3
  • 18

2 Answers2

1

You'll have to tell the adapter that the data has been updated after a while by calling adapter.notifyDataSetChanged() in your onComplete() callback.

DarshanGowda0
  • 452
  • 3
  • 11
0

Call showMovie() in onResume().

yifan
  • 183
  • 5