Advertisement
Guest User

Untitled

a guest
Oct 20th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.60 KB | None | 0 0
  1. public interface ApiService {
  2. @GET("movies?")
  3. Single<MovieResponse> getMovieList(@Query("page") int page);
  4. }
  5.  
  6. public class ServerDataSource implements DataSource {
  7.  
  8. @Inject
  9. ApiService apiServices;
  10.  
  11. public ServerDataSource(ApiService apiServices) {
  12. this.apiServices = apiServices;
  13. }
  14.  
  15. @Override
  16. public Single<MovieResponse> getMovieListResponse(int page) {
  17. return apiServices.getMovieList(page);
  18. }
  19. }
  20.  
  21. @Module
  22. public class ServerModule {
  23.  
  24. @Provides
  25. @Singleton
  26. Retrofit provideCall() {
  27. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  28. .readTimeout(60, TimeUnit.SECONDS)
  29. .writeTimeout(60, TimeUnit.SECONDS)
  30. .connectTimeout(60, TimeUnit.SECONDS)
  31. .build();
  32.  
  33. return new Retrofit.Builder()
  34. .baseUrl(AppConstant.BASE_URL)
  35. .client(okHttpClient)
  36. .addConverterFactory(GsonConverterFactory.create())
  37. .addConverterFactory(ScalarsConverterFactory.create())
  38. .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
  39. .build();
  40. }
  41.  
  42. @Provides
  43. @Singleton
  44. ApiService provideApiServices(Retrofit retrofit) {
  45. return retrofit.create(ApiService.class);
  46. }
  47.  
  48. @Provides
  49. @Singleton
  50. ServerDataSource provideServerDataSource(ApiService apiServices) {
  51. return new ServerDataSource(apiServices);
  52. }
  53. }
  54.  
  55. public class HomePresenter implements HomeContract.Presenter {
  56.  
  57. private HomeContract.View view;
  58. private DataSource dataSource;
  59. private CompositeDisposable disposable = new CompositeDisposable();
  60.  
  61. public HomePresenter(DataSource dataSource) {
  62. this.dataSource = dataSource;
  63. }
  64.  
  65. @Override
  66. public void getMoviesList(int page) {
  67. view.showLoader();
  68. dataSource.getMovieListResponse(page).subscribeOn(Schedulers.newThread())
  69. .observeOn(AndroidSchedulers.mainThread())
  70. .subscribe(new SingleObserver<MovieResponse>() {
  71. @Override
  72. public void onSubscribe(Disposable d) {
  73. disposable.add(d);
  74. }
  75.  
  76. @Override
  77. public void onSuccess(MovieResponse newsResponse) {
  78. view.hideLoader();
  79. view.showMoviesList(newsResponse);
  80. }
  81.  
  82. @Override
  83. public void onError(Throwable e) {
  84. view.hideLoader();
  85. view.showError(e.toString());
  86. }
  87. });
  88. }
  89.  
  90. @Override
  91. public void attachView(HomeContract.View view) {
  92. this.view = view;
  93. }
  94.  
  95. @Override
  96. public void detachView() {
  97. this.view = null;
  98. if (disposable != null && disposable.size() > 0) {
  99. disposable.clear();
  100. }
  101. }
  102. }
  103.  
  104. public class HomeActivity extends BaseActivity implements HomeContract.View {
  105.  
  106. @BindView(R.id.baseFragment_loader)
  107. ProgressBar baseFragment_loader;
  108. @BindView(R.id.baseFragment_content)
  109. RelativeLayout baseFragment_content;
  110. @BindView(R.id.baseFragment_contentNewsList)
  111. RecyclerView baseFragment_contentNewsList;
  112.  
  113. private HomeContract.Presenter presenter;
  114. private List<Datum> todayList = new ArrayList<>();
  115. private HomeMoviesListAdapter newsAdapter;
  116. @Inject
  117. ApiService apiService;
  118.  
  119.  
  120. @Override
  121. public void onCreate(@Nullable Bundle savedInstanceState) {
  122. super.onCreate(savedInstanceState);
  123.  
  124. presenter = new HomePresenter(new ServerDataSource(apiService));
  125. }
  126.  
  127. @Override
  128. public void onStart() {
  129. super.onStart();
  130. presenter.attachView(this);
  131. setupViews();
  132. }
  133.  
  134. @Override
  135. public void onStop() {
  136. super.onStop();
  137. presenter.detachView();
  138. }
  139.  
  140. @Override
  141. public Context getViewContext() {
  142. return this;
  143. }
  144.  
  145. @Override
  146. public void setupViews() {
  147. newsAdapter = new HomeMoviesListAdapter(todayList);
  148. AppConstant.setupRecyclerView_linear(getViewContext(), baseFragment_contentNewsList, newsAdapter);
  149. presenter.getMoviesList(1);
  150. }
  151.  
  152. @Override
  153. public int getLayout() {
  154. return R.layout.activity_main;
  155. }
  156.  
  157. @Override
  158. public void showMoviesList(MovieResponse newsList) {
  159. todayList.clear();
  160. todayList.addAll(newsList.getData());
  161. newsAdapter.notifyDataSetChanged();
  162. }
  163.  
  164. @Override
  165. public void showError(String err) {
  166. Toast.makeText(getViewContext(), err, Toast.LENGTH_SHORT).show();
  167. }
  168.  
  169. @Override
  170. public void showLoader() {
  171. baseFragment_loader.setVisibility(View.VISIBLE);
  172. baseFragment_content.setVisibility(View.GONE);
  173. }
  174.  
  175. @Override
  176. public void hideLoader() {
  177. baseFragment_loader.setVisibility(View.GONE);
  178. baseFragment_content.setVisibility(View.VISIBLE);
  179. }
  180. }
  181.  
  182. Caused by: java.lang.NullPointerException
  183. at com.example.mohammad.movietestproject.Data.Network.ServerDataSource.getMovieListResponse(ServerDataSource.java:28)
  184. at com.example.mohammad.movietestproject.Home.HomePresenter.getMoviesList(HomePresenter.java:25)
  185. at com.example.mohammad.movietestproject.Home.HomeActivity.setupViews(HomeActivity.java:72)
  186. at com.example.mohammad.movietestproject.Home.HomeActivity.onStart(HomeActivity.java:54)
  187. at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1188)
  188. at android.app.Activity.performStart(Activity.java:5241)
  189.  
  190. @Override
  191. public Single<MovieResponse> getMovieListResponse(int page) {
  192. return apiServices.getMovieList(page);
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement