Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.nurrohim.moviedicoding.fragment;
- import android.content.Context;
- import android.os.Bundle;
- import android.support.v4.app.Fragment;
- import android.support.v4.widget.SwipeRefreshLayout;
- import android.support.v7.widget.LinearLayoutManager;
- import android.support.v7.widget.RecyclerView;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.Toast;
- import com.example.nurrohim.moviedicoding.R;
- import com.example.nurrohim.moviedicoding.adapter.MoviesAdapter;
- import com.example.nurrohim.moviedicoding.model.nowplaying.NowPlaying;
- import com.example.nurrohim.moviedicoding.model.search.ResultsItem;
- import com.example.nurrohim.moviedicoding.model.upcoming.UpcomingModel;
- import com.example.nurrohim.moviedicoding.service.APIClient;
- import com.example.nurrohim.moviedicoding.utils.Language;
- import com.google.gson.Gson;
- import java.lang.reflect.Array;
- import java.text.NumberFormat;
- import java.util.ArrayList;
- import java.util.List;
- import butterknife.BindView;
- import butterknife.ButterKnife;
- import butterknife.Unbinder;
- import retrofit2.Call;
- import retrofit2.Callback;
- import retrofit2.Response;
- /**
- * A simple {@link Fragment} subclass.
- */
- public class NowPlayingFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener {
- private static final String TAG = "MyActivity";
- private static final String ZAG = "Data Result Item";
- private Context context;
- @BindView(R.id.rv_movielist)
- RecyclerView rv_movielist;
- private MoviesAdapter adapter;
- private Unbinder unbinder;
- private Call<NowPlaying> apiCall;
- private APIClient apiClient = new APIClient();
- private NowPlaying nowPlaying;
- private int currentPage = 1;
- private int totalPages = 1;
- @BindView(R.id.swipe_upcoming)
- SwipeRefreshLayout swipe_coming;
- public final String TASK_STATE_KEY ="task_state_key";
- private Gson gson = new Gson();
- ArrayList<ResultsItem> resultsItems = new ArrayList<>();
- public NowPlayingFragment() {
- // Required empty public constructor
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- // Inflate the layout for this fragment
- View view = inflater.inflate(R.layout.fragment_now_playing, container, false);
- context = view.getContext();
- unbinder = ButterKnife.bind(this, view);
- swipe_coming.setOnRefreshListener(this);
- setuplist();
- loadData();
- setupListScrollListener();
- if (savedInstanceState != null){
- resultsItems = savedInstanceState.getParcelableArrayList(TASK_STATE_KEY);
- // Log.d(TAG,"data" +resultsItems);
- }
- return view;
- }
- @Override
- public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- outState.putParcelableArrayList(TASK_STATE_KEY, resultsItems);
- Log.d(ZAG,"ResultItem Data" +outState);
- }
- private void setuplist() {
- adapter = new MoviesAdapter();
- rv_movielist.setLayoutManager(new LinearLayoutManager(context));
- rv_movielist.setAdapter(adapter);
- }
- private void loadData() {
- apiCall = apiClient.getService().getNowPlaying(Language.getCountry(),currentPage);
- apiCall.enqueue(new Callback<NowPlaying>() {
- @Override
- public void onResponse(Call<NowPlaying> call, Response<NowPlaying> response) {
- if (response.isSuccessful()) {
- totalPages = response.body().getTotalPages();
- //List<ResultsItem> items = response.body().getResults();
- resultsItems= response.body().getResults();
- showResults(response.body().getTotalResults());
- if (currentPage > 1) adapter.updateData(resultsItems);
- else adapter.replaceAll(resultsItems);
- stopRefrehing();
- } else loadFailed();
- }
- @Override
- public void onFailure(Call<NowPlaying> call, Throwable t) {
- loadFailed();
- }
- });
- }
- private void loadFailed() {
- stopRefrehing();
- Toast.makeText(context, R.string.error_mas, Toast.LENGTH_SHORT).show();
- }
- @Override
- public void onRefresh() {
- currentPage = 1;
- totalPages = 1;
- stopRefrehing();
- startRefreshing();
- }
- private void setupListScrollListener() {
- rv_movielist.addOnScrollListener(new RecyclerView.OnScrollListener() {
- @Override
- public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
- super.onScrolled(recyclerView, dx, dy);
- LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
- int totalItems = layoutManager.getItemCount();
- int visibleItems = layoutManager.getChildCount();
- int pastVisibleItems = layoutManager.findFirstCompletelyVisibleItemPosition();
- if (pastVisibleItems + visibleItems >= totalItems) {
- if (currentPage < totalPages) currentPage++;
- startRefreshing();
- }
- }
- });
- }
- private void showResults(int totalResults) {
- String formatResults = NumberFormat.getIntegerInstance().format(totalResults);
- }
- private void startRefreshing() {
- if (swipe_coming.isRefreshing()) return;
- swipe_coming.setRefreshing(true);
- loadData();
- }
- private void stopRefrehing() {
- if (swipe_coming.isRefreshing()) swipe_coming.setRefreshing(false);
- }
- @Override
- public void onDestroyView() {
- super.onDestroyView();
- unbinder.unbind();
- if (apiCall != null) apiCall.cancel();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement