· 6 years ago · Sep 03, 2019, 09:40 AM
1https://github.com/Fikifh/sub4
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19package com.dicoding.picodiploma.fiki.sub4.ui.movies;
20
21import android.content.Context;
22import android.content.DialogInterface;
23import android.content.Intent;
24import android.net.ConnectivityManager;
25import android.net.NetworkInfo;
26import android.os.Bundle;
27import android.os.Parcelable;
28import android.util.Log;
29import android.view.LayoutInflater;
30import android.view.View;
31import android.view.ViewGroup;
32import android.widget.ProgressBar;
33import android.widget.Toast;
34
35import androidx.annotation.NonNull;
36import androidx.annotation.Nullable;
37import androidx.appcompat.app.AlertDialog;
38import androidx.fragment.app.Fragment;
39import androidx.recyclerview.widget.GridLayoutManager;
40import androidx.recyclerview.widget.RecyclerView;
41
42import com.dicoding.picodiploma.fiki.sub4.MainActivity;
43import com.dicoding.picodiploma.fiki.sub4.R;
44import com.dicoding.picodiploma.fiki.sub4.adapter.MoviesAdapter;
45import com.dicoding.picodiploma.fiki.sub4.api.APIServices;
46import com.dicoding.picodiploma.fiki.sub4.model.Movies;
47import com.dicoding.picodiploma.fiki.sub4.model.MoviesResponse;
48
49import java.util.ArrayList;
50import java.util.Objects;
51
52import retrofit2.Call;
53import retrofit2.Callback;
54import retrofit2.Response;
55import retrofit2.Retrofit;
56import retrofit2.converter.gson.GsonConverterFactory;
57
58public class MoviesFragment extends Fragment {
59
60 private RecyclerView rvMovie;
61 private ArrayList<Movies> movies = new ArrayList<>();
62 private ArrayList<Movies> movieState;
63 private ProgressBar progressBar;
64 private GridLayoutManager mLayoutManager;
65 private MoviesAdapter mMoviesAdapter;
66 private static final String TAG = MainActivity.class.getSimpleName();
67 private static final String BASE_URL = "http://api.themoviedb.org/3/";
68 private static Retrofit retrofit = null;
69 // insert your themoviedb.org API KEY here
70 private final static String API_KEY = "67b5496e1b4c26ad30c16ad08f2deaa2";
71 private final static String MOVIE_KEY = "SI_KEY";
72
73 public MoviesFragment() {
74 }
75
76 @Nullable
77 @Override
78 public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
79 View v = inflater.inflate(R.layout.fragment_movies, container, false);
80 progressBar = v.findViewById(R.id.progressBar);
81 rvMovie = v.findViewById(R.id.rv_movies_id);
82 rvMovie.setHasFixedSize(true);
83 if (savedInstanceState != null) {
84 movies = savedInstanceState.getParcelableArrayList(MOVIE_KEY);
85 Toast.makeText(getActivity(), movies.toString(), Toast.LENGTH_LONG).show();
86 mLayoutManager = new GridLayoutManager(getActivity(),2);
87 rvMovie.setLayoutManager(mLayoutManager);
88 mMoviesAdapter = new MoviesAdapter(movies);
89 rvMovie.setAdapter(mMoviesAdapter);
90 } else {
91 connectingAndGetAPIData();
92 Toast.makeText(getActivity(), "SAVE STATE NULL", Toast.LENGTH_LONG).show();
93 }
94 return v;
95 }
96
97
98 public void showLoading(Boolean state) {
99 if (state) {
100 progressBar.setVisibility(View.VISIBLE);
101 } else {
102 progressBar.setVisibility(View.GONE);
103 }
104 }
105
106 private void connectingAndGetAPIData(){
107 if (retrofit == null) {
108 retrofit = new Retrofit.Builder()
109 .baseUrl(BASE_URL)
110 .addConverterFactory(GsonConverterFactory.create())
111 .build();
112 }
113
114 APIServices APIServices = retrofit.create(APIServices.class);
115 Call<MoviesResponse> call = APIServices.getListMovies(API_KEY);
116 showLoading(true);
117 call.enqueue(new Callback<MoviesResponse>() {
118 @Override
119 public void onResponse(Call<MoviesResponse> call, Response<MoviesResponse> response) {
120 try{
121 showLoading(false);
122 movies = response.body().getResults();
123 GridLayoutManager mLayoutManager = new GridLayoutManager(getActivity(),2);
124 rvMovie.setLayoutManager(mLayoutManager);
125 mMoviesAdapter = new MoviesAdapter(movies);
126 rvMovie.setAdapter(mMoviesAdapter);
127 Log.d(TAG, "Number of movies received: " + movies.size());
128 }catch (Exception e){
129 Toast.makeText(getContext(), e.toString(), Toast.LENGTH_LONG).show();
130 }
131
132 }
133
134 @Override
135 public void onFailure(Call<MoviesResponse> call, Throwable t) {
136 Log.e(TAG, t.toString());
137 }
138 });
139
140 }
141
142 @Override
143 public void onSaveInstanceState(@NonNull Bundle outState) {
144 outState.putParcelableArrayList(MOVIE_KEY, movies);
145 super.onSaveInstanceState(outState);
146 }
147
148}