Advertisement
nurrohim11

Up Coming Fragment

Jul 19th, 2018
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.63 KB | None | 0 0
  1. package com.example.nurrohim.moviedicoding.fragment;
  2.  
  3.  
  4. import android.content.Context;
  5. import android.os.Bundle;
  6. import android.support.v4.app.Fragment;
  7. import android.support.v4.widget.SwipeRefreshLayout;
  8. import android.support.v7.widget.LinearLayoutManager;
  9. import android.support.v7.widget.RecyclerView;
  10. import android.view.LayoutInflater;
  11. import android.view.View;
  12. import android.view.ViewGroup;
  13. import android.widget.Toast;
  14.  
  15. import com.example.nurrohim.moviedicoding.R;
  16. import com.example.nurrohim.moviedicoding.adapter.MoviesAdapter;
  17. import com.example.nurrohim.moviedicoding.model.search.ResultsItem;
  18. import com.example.nurrohim.moviedicoding.model.upcoming.UpcomingModel;
  19. import com.example.nurrohim.moviedicoding.service.APIClient;
  20. import com.example.nurrohim.moviedicoding.utils.Language;
  21.  
  22. import java.text.NumberFormat;
  23. import java.util.ArrayList;
  24.  
  25. import butterknife.BindView;
  26. import butterknife.ButterKnife;
  27. import butterknife.Unbinder;
  28. import retrofit2.Call;
  29. import retrofit2.Callback;
  30. import retrofit2.Response;
  31.  
  32. /**
  33.  * A simple {@link Fragment} subclass.
  34.  */
  35. public class UpComingFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener{
  36.  
  37.  
  38.     private Context context;
  39.     @BindView(R.id.rv_upcoming)
  40.     RecyclerView rvUpcoming;
  41.     @BindView(R.id.swipe_refresh)
  42.     SwipeRefreshLayout swipe_refresh;
  43.     private Unbinder unbinder;
  44.  
  45.     private MoviesAdapter adapter;
  46.  
  47.     private Call<UpcomingModel> apiCall;
  48.     private APIClient apiClient = new APIClient();
  49.     private UpcomingModel upcomingModel;
  50.     public final String KEY_PARCELABLE ="key_parcelable";
  51.  
  52.     ArrayList<ResultsItem> resultsItems = new ArrayList<>();
  53.  
  54.     private int currentPage = 1;
  55.     private int totalPages = 1;
  56.  
  57.  
  58.     public UpComingFragment() {
  59.         // Required empty public constructor
  60.     }
  61.  
  62.  
  63.     @Override
  64.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
  65.                              Bundle savedInstanceState) {
  66.         View view= inflater.inflate(R.layout.fragment_up_coming, container, false);
  67.         context=view.getContext();
  68.         unbinder = ButterKnife.bind(this, view);
  69.         swipe_refresh.setOnRefreshListener(this);
  70.         setuplist();
  71.         setupListScrollListener();
  72.         loadData();
  73.  
  74.         if (savedInstanceState != null){
  75.             resultsItems = savedInstanceState.getParcelableArrayList(KEY_PARCELABLE);
  76.         }
  77.         return view;
  78.     }
  79.     private void loadData() {
  80.         apiCall = apiClient.getService().getUpcomingModel(Language.getCountry(),currentPage);
  81.  
  82.         apiCall.enqueue(new Callback<UpcomingModel>() {
  83.             @Override
  84.             public void onResponse(Call<UpcomingModel> call, Response<UpcomingModel> response) {
  85.                 if (response.isSuccessful()) {
  86.                     totalPages = response.body().getTotalPages();
  87.                     //List<ResultsItem> items = response.body().getResults();
  88.                     resultsItems= response.body().getResults();
  89.                     showResults(response.body().getTotalResults());
  90.  
  91.                     if (currentPage > 1) adapter.updateData(resultsItems);
  92.                     else adapter.replaceAll(resultsItems);
  93.                     stopRefrehing();
  94.                 } else loadFailed();
  95.             }
  96.  
  97.             @Override
  98.             public void onFailure(Call<UpcomingModel> call, Throwable t) {
  99.                 stopRefrehing();
  100.                 loadFailed();
  101.             }
  102.         });
  103.     }
  104.     @Override
  105.     public void onSaveInstanceState(Bundle outState) {
  106.        // ArrayList<ResultsItem> items= response.body().getResults();
  107.         outState.putParcelableArrayList(KEY_PARCELABLE, resultsItems);
  108.         super.onSaveInstanceState(outState);
  109.     }
  110.     private void setuplist() {
  111.         adapter = new MoviesAdapter();
  112.         rvUpcoming.setLayoutManager(new LinearLayoutManager(context));
  113.         rvUpcoming.setAdapter(adapter);
  114.     }
  115.     private void setupListScrollListener() {
  116.         rvUpcoming.addOnScrollListener(new RecyclerView.OnScrollListener() {
  117.             @Override
  118.             public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
  119.                 super.onScrolled(recyclerView, dx, dy);
  120.  
  121.                 LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
  122.  
  123.                 int totalItems = layoutManager.getItemCount();
  124.                 int visibleItems = layoutManager.getChildCount();
  125.                 int pastVisibleItems = layoutManager.findFirstCompletelyVisibleItemPosition();
  126.  
  127.                 if (pastVisibleItems + visibleItems >= totalItems) {
  128.                     if (currentPage < totalPages) currentPage++;
  129.                     startRefreshing();
  130.                 }
  131.             }
  132.         });
  133.     }
  134.     private void loadFailed() {
  135.         Toast.makeText(context, R.string.error_mas,Toast.LENGTH_SHORT).show();
  136.     }
  137.  
  138.     private void showResults(int totalResults) {
  139.         String formatResults = NumberFormat.getIntegerInstance().format(totalResults);
  140.     }
  141.  
  142.     @Override
  143.     public void onRefresh() {
  144.         currentPage = 1;
  145.         totalPages = 1;
  146.  
  147.         stopRefrehing();
  148.         startRefreshing();
  149.     }
  150.     private void startRefreshing() {
  151.         if (swipe_refresh.isRefreshing()) return;
  152.         swipe_refresh.setRefreshing(true);
  153.  
  154.         loadData();
  155.     }
  156.  
  157.     private void stopRefrehing() {
  158.         if (swipe_refresh.isRefreshing()) swipe_refresh.setRefreshing(false);
  159.     }
  160.     public void setData(UpcomingModel data) {
  161.         this.upcomingModel = data;
  162.     }
  163.  
  164.     public UpcomingModel getData() {
  165.         return upcomingModel;
  166.     }
  167.  
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement