Advertisement
nurrohim11

Up Coming Fragment

Jul 16th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.45 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. import java.util.List;
  25.  
  26. import butterknife.BindView;
  27. import butterknife.ButterKnife;
  28. import butterknife.Unbinder;
  29. import retrofit2.Call;
  30. import retrofit2.Callback;
  31. import retrofit2.Response;
  32.  
  33. /**
  34.  * A simple {@link Fragment} subclass.
  35.  */
  36. public class UpComingFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener{
  37.  
  38.  
  39.     private Context context;
  40.     @BindView(R.id.rv_upcoming)
  41.     RecyclerView rvUpcoming;
  42.     @BindView(R.id.swipe_refresh)
  43.     SwipeRefreshLayout swipe_refresh;
  44.     private Unbinder unbinder;
  45.  
  46.     private MoviesAdapter adapter;
  47.  
  48.     private Call<UpcomingModel> apiCall;
  49.     private APIClient apiClient = new APIClient();
  50.     private UpcomingModel upcomingModel;
  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("listfilm");
  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.                     List<ResultsItem> items= response.body().getResults();
  89.                     showResults(response.body().getTotalResults());
  90.  
  91.                     if (currentPage > 1) adapter.updateData(items);
  92.                     else adapter.replaceAll(items);
  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.  
  107.         super.onSaveInstanceState(outState);
  108.     }
  109.     private void setuplist() {
  110.         adapter = new MoviesAdapter();
  111.         rvUpcoming.setLayoutManager(new LinearLayoutManager(context));
  112.         rvUpcoming.setAdapter(adapter);
  113.     }
  114.     private void setupListScrollListener() {
  115.         rvUpcoming.addOnScrollListener(new RecyclerView.OnScrollListener() {
  116.             @Override
  117.             public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
  118.                 super.onScrolled(recyclerView, dx, dy);
  119.  
  120.                 LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
  121.  
  122.                 int totalItems = layoutManager.getItemCount();
  123.                 int visibleItems = layoutManager.getChildCount();
  124.                 int pastVisibleItems = layoutManager.findFirstCompletelyVisibleItemPosition();
  125.  
  126.                 if (pastVisibleItems + visibleItems >= totalItems) {
  127.                     if (currentPage < totalPages) currentPage++;
  128.                     startRefreshing();
  129.                 }
  130.             }
  131.         });
  132.     }
  133.     private void loadFailed() {
  134.         Toast.makeText(context, R.string.error_mas,Toast.LENGTH_SHORT).show();
  135.     }
  136.  
  137.     private void showResults(int totalResults) {
  138.         String formatResults = NumberFormat.getIntegerInstance().format(totalResults);
  139.     }
  140.  
  141.     @Override
  142.     public void onRefresh() {
  143.         currentPage = 1;
  144.         totalPages = 1;
  145.  
  146.         stopRefrehing();
  147.         startRefreshing();
  148.     }
  149.     private void startRefreshing() {
  150.         if (swipe_refresh.isRefreshing()) return;
  151.         swipe_refresh.setRefreshing(true);
  152.  
  153.         loadData();
  154.     }
  155.  
  156.     private void stopRefrehing() {
  157.         if (swipe_refresh.isRefreshing()) swipe_refresh.setRefreshing(false);
  158.     }
  159.     public void setData(UpcomingModel data) {
  160.         this.upcomingModel = data;
  161.     }
  162.  
  163.     public UpcomingModel getData() {
  164.         return upcomingModel;
  165.     }
  166.  
  167. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement