Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public interface ApiService {
- @GET("movies?")
- Single<MovieResponse> getMovieList(@Query("page") int page);
- }
- public class ServerDataSource implements DataSource {
- @Inject
- ApiService apiServices;
- public ServerDataSource(ApiService apiServices) {
- this.apiServices = apiServices;
- }
- @Override
- public Single<MovieResponse> getMovieListResponse(int page) {
- return apiServices.getMovieList(page);
- }
- }
- @Module
- public class ServerModule {
- @Provides
- @Singleton
- Retrofit provideCall() {
- OkHttpClient okHttpClient = new OkHttpClient.Builder()
- .readTimeout(60, TimeUnit.SECONDS)
- .writeTimeout(60, TimeUnit.SECONDS)
- .connectTimeout(60, TimeUnit.SECONDS)
- .build();
- return new Retrofit.Builder()
- .baseUrl(AppConstant.BASE_URL)
- .client(okHttpClient)
- .addConverterFactory(GsonConverterFactory.create())
- .addConverterFactory(ScalarsConverterFactory.create())
- .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
- .build();
- }
- @Provides
- @Singleton
- ApiService provideApiServices(Retrofit retrofit) {
- return retrofit.create(ApiService.class);
- }
- @Provides
- @Singleton
- ServerDataSource provideServerDataSource(ApiService apiServices) {
- return new ServerDataSource(apiServices);
- }
- }
- public class HomePresenter implements HomeContract.Presenter {
- private HomeContract.View view;
- private DataSource dataSource;
- private CompositeDisposable disposable = new CompositeDisposable();
- public HomePresenter(DataSource dataSource) {
- this.dataSource = dataSource;
- }
- @Override
- public void getMoviesList(int page) {
- view.showLoader();
- dataSource.getMovieListResponse(page).subscribeOn(Schedulers.newThread())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new SingleObserver<MovieResponse>() {
- @Override
- public void onSubscribe(Disposable d) {
- disposable.add(d);
- }
- @Override
- public void onSuccess(MovieResponse newsResponse) {
- view.hideLoader();
- view.showMoviesList(newsResponse);
- }
- @Override
- public void onError(Throwable e) {
- view.hideLoader();
- view.showError(e.toString());
- }
- });
- }
- @Override
- public void attachView(HomeContract.View view) {
- this.view = view;
- }
- @Override
- public void detachView() {
- this.view = null;
- if (disposable != null && disposable.size() > 0) {
- disposable.clear();
- }
- }
- }
- public class HomeActivity extends BaseActivity implements HomeContract.View {
- @BindView(R.id.baseFragment_loader)
- ProgressBar baseFragment_loader;
- @BindView(R.id.baseFragment_content)
- RelativeLayout baseFragment_content;
- @BindView(R.id.baseFragment_contentNewsList)
- RecyclerView baseFragment_contentNewsList;
- private HomeContract.Presenter presenter;
- private List<Datum> todayList = new ArrayList<>();
- private HomeMoviesListAdapter newsAdapter;
- @Inject
- ApiService apiService;
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- presenter = new HomePresenter(new ServerDataSource(apiService));
- }
- @Override
- public void onStart() {
- super.onStart();
- presenter.attachView(this);
- setupViews();
- }
- @Override
- public void onStop() {
- super.onStop();
- presenter.detachView();
- }
- @Override
- public Context getViewContext() {
- return this;
- }
- @Override
- public void setupViews() {
- newsAdapter = new HomeMoviesListAdapter(todayList);
- AppConstant.setupRecyclerView_linear(getViewContext(), baseFragment_contentNewsList, newsAdapter);
- presenter.getMoviesList(1);
- }
- @Override
- public int getLayout() {
- return R.layout.activity_main;
- }
- @Override
- public void showMoviesList(MovieResponse newsList) {
- todayList.clear();
- todayList.addAll(newsList.getData());
- newsAdapter.notifyDataSetChanged();
- }
- @Override
- public void showError(String err) {
- Toast.makeText(getViewContext(), err, Toast.LENGTH_SHORT).show();
- }
- @Override
- public void showLoader() {
- baseFragment_loader.setVisibility(View.VISIBLE);
- baseFragment_content.setVisibility(View.GONE);
- }
- @Override
- public void hideLoader() {
- baseFragment_loader.setVisibility(View.GONE);
- baseFragment_content.setVisibility(View.VISIBLE);
- }
- }
- Caused by: java.lang.NullPointerException
- at com.example.mohammad.movietestproject.Data.Network.ServerDataSource.getMovieListResponse(ServerDataSource.java:28)
- at com.example.mohammad.movietestproject.Home.HomePresenter.getMoviesList(HomePresenter.java:25)
- at com.example.mohammad.movietestproject.Home.HomeActivity.setupViews(HomeActivity.java:72)
- at com.example.mohammad.movietestproject.Home.HomeActivity.onStart(HomeActivity.java:54)
- at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1188)
- at android.app.Activity.performStart(Activity.java:5241)
- @Override
- public Single<MovieResponse> getMovieListResponse(int page) {
- return apiServices.getMovieList(page);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement