Advertisement
nurrohim11

Now Playing Fragment

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