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.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.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 java.text.NumberFormat;
- import java.util.ArrayList;
- 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 UpComingFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener{
- private Context context;
- @BindView(R.id.rv_upcoming)
- RecyclerView rvUpcoming;
- @BindView(R.id.swipe_refresh)
- SwipeRefreshLayout swipe_refresh;
- private Unbinder unbinder;
- private MoviesAdapter adapter;
- private Call<UpcomingModel> apiCall;
- private APIClient apiClient = new APIClient();
- private UpcomingModel upcomingModel;
- public final String KEY_PARCELABLE ="key_parcelable";
- ArrayList<ResultsItem> resultsItems = new ArrayList<>();
- private int currentPage = 1;
- private int totalPages = 1;
- public UpComingFragment() {
- // Required empty public constructor
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View view= inflater.inflate(R.layout.fragment_up_coming, container, false);
- context=view.getContext();
- unbinder = ButterKnife.bind(this, view);
- swipe_refresh.setOnRefreshListener(this);
- setuplist();
- setupListScrollListener();
- loadData();
- if (savedInstanceState != null){
- resultsItems = savedInstanceState.getParcelableArrayList(KEY_PARCELABLE);
- }
- return view;
- }
- private void loadData() {
- apiCall = apiClient.getService().getUpcomingModel(Language.getCountry(),currentPage);
- apiCall.enqueue(new Callback<UpcomingModel>() {
- @Override
- public void onResponse(Call<UpcomingModel> call, Response<UpcomingModel> 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<UpcomingModel> call, Throwable t) {
- stopRefrehing();
- loadFailed();
- }
- });
- }
- @Override
- public void onSaveInstanceState(Bundle outState) {
- // ArrayList<ResultsItem> items= response.body().getResults();
- outState.putParcelableArrayList(KEY_PARCELABLE, resultsItems);
- super.onSaveInstanceState(outState);
- }
- private void setuplist() {
- adapter = new MoviesAdapter();
- rvUpcoming.setLayoutManager(new LinearLayoutManager(context));
- rvUpcoming.setAdapter(adapter);
- }
- private void setupListScrollListener() {
- rvUpcoming.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 loadFailed() {
- Toast.makeText(context, R.string.error_mas,Toast.LENGTH_SHORT).show();
- }
- private void showResults(int totalResults) {
- String formatResults = NumberFormat.getIntegerInstance().format(totalResults);
- }
- @Override
- public void onRefresh() {
- currentPage = 1;
- totalPages = 1;
- stopRefrehing();
- startRefreshing();
- }
- private void startRefreshing() {
- if (swipe_refresh.isRefreshing()) return;
- swipe_refresh.setRefreshing(true);
- loadData();
- }
- private void stopRefrehing() {
- if (swipe_refresh.isRefreshing()) swipe_refresh.setRefreshing(false);
- }
- public void setData(UpcomingModel data) {
- this.upcomingModel = data;
- }
- public UpcomingModel getData() {
- return upcomingModel;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement