Created
July 30, 2016 07:41
-
-
Save jimitjaishwal/36fee5989f0dd178cf86cbb0c00adad4 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package com.android.jimitjaishwal.popularmovies.app.MainScreen; | |
| import android.content.ContentValues; | |
| import android.content.SharedPreferences; | |
| import android.database.Cursor; | |
| import android.os.Bundle; | |
| import android.preference.PreferenceManager; | |
| import android.support.annotation.Nullable; | |
| import android.support.v4.app.Fragment; | |
| import android.support.v7.widget.RecyclerView; | |
| import android.support.v7.widget.StaggeredGridLayoutManager; | |
| import android.util.Log; | |
| import android.view.LayoutInflater; | |
| import android.view.View; | |
| import android.view.ViewGroup; | |
| import com.android.jimitjaishwal.popularmovies.app.Adapters.MovieAdapter; | |
| import com.android.jimitjaishwal.popularmovies.app.Models.MovieModel; | |
| import com.android.jimitjaishwal.popularmovies.app.NetworkServise.MovieService; | |
| import com.android.jimitjaishwal.popularmovies.app.R; | |
| import java.util.ArrayList; | |
| import java.util.Vector; | |
| import retrofit2.Call; | |
| import retrofit2.Callback; | |
| import retrofit2.Response; | |
| import retrofit2.Retrofit; | |
| import retrofit2.converter.gson.GsonConverterFactory; | |
| import static com.android.jimitjaishwal.popularmovies.app.data.MovieContract.FavouriteMovie; | |
| /** | |
| * A placeholder fragment containing a simple view. | |
| */ | |
| public class MainActivityFragment extends Fragment { | |
| private String LOG_TAG = MainActivityFragment.class.getSimpleName(); | |
| private MovieAdapter adapter; | |
| private RecyclerView recyclerView; | |
| private ArrayList<MovieModel> movieList; | |
| private static final String base_url = "http://api.themoviedb.org/3/"; | |
| public MainActivityFragment() { | |
| } | |
| @Override | |
| public void onCreate(@Nullable Bundle savedInstanceState) { | |
| super.onCreate(savedInstanceState); | |
| if (savedInstanceState == null || !savedInstanceState.containsKey("MovieData")) { | |
| movieList = new ArrayList<MovieModel>(); | |
| } else { | |
| movieList = savedInstanceState.getParcelableArrayList("MovieData"); | |
| } | |
| getMovies(); | |
| Cursor cursor = getActivity().getContentResolver() | |
| .query(FavouriteMovie.BASE_URI, | |
| null, | |
| null, | |
| null, | |
| null); | |
| ArrayList<MovieModel> movie = getMoviesFormCursor(cursor); | |
| adapter = new MovieAdapter(movie, getActivity()); | |
| recyclerView.setAdapter(adapter); | |
| } | |
| @Override | |
| public void onSaveInstanceState(Bundle outState) { | |
| super.onSaveInstanceState(outState); | |
| outState.putParcelableArrayList("MovieData", movieList); | |
| } | |
| public void getMovies() { | |
| Retrofit retrofit = new Retrofit.Builder() | |
| .baseUrl(base_url) | |
| .addConverterFactory(GsonConverterFactory.create()) | |
| .build(); | |
| MovieService service = retrofit.create(MovieService.class); | |
| SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); | |
| String sort_by = prefs.getString( | |
| getString(R.string.pref_key_movies_sort_by_movieList), | |
| getString(R.string.pref_movie_sort_by_popularMovies_desc)); | |
| Call<MovieModel.MovieResponse> call = service.getPopularMovies(sort_by); | |
| call.enqueue(new Callback<MovieModel.MovieResponse>() { | |
| @Override | |
| public void onResponse(Call<MovieModel.MovieResponse> call, Response<MovieModel.MovieResponse> response) { | |
| movieList = response.body().getResults(); | |
| for (MovieModel movies : movieList) { | |
| int movieId = movies.getId(); | |
| String posterPath = movies.getPoster_path(); | |
| String overView = movies.getOverview(); | |
| String releaseDate = movies.getRelease_date(); | |
| String originalTitle = movies.getOriginal_title(); | |
| String backDropPath = movies.getBackdrop_path(); | |
| double voteAverage = movies.getVote_average(); | |
| Vector<ContentValues> cVv = new Vector<ContentValues>(); | |
| ContentValues values = new ContentValues(); | |
| values.put(FavouriteMovie.COLUMN_MOVIE_ID, movieId); | |
| values.put(FavouriteMovie.COLUMN_POSTER_PATH, posterPath); | |
| values.put(FavouriteMovie.COLUMN_OVERVIEW, overView); | |
| values.put(FavouriteMovie.COLUMN_RELEASE_DATE, releaseDate); | |
| values.put(FavouriteMovie.COLUMN_ORIGINAL_TITLE, originalTitle); | |
| values.put(FavouriteMovie.COLUMN_BACKDROP_PATH, backDropPath); | |
| values.put(FavouriteMovie.COLUMN_VOTE_AVERAGE, voteAverage); | |
| cVv.add(values); | |
| int insertedRow = 0; | |
| if (cVv.size() > 0) { | |
| ContentValues[] movieTableValue = new ContentValues[cVv.size()]; | |
| cVv.toArray(movieTableValue); | |
| insertedRow = getActivity() | |
| .getContentResolver() | |
| .bulkInsert(FavouriteMovie.BASE_URI, movieTableValue); | |
| } | |
| Log.d(LOG_TAG, "Movie Table Rows " + insertedRow + " Rows inserted"); | |
| } | |
| } | |
| @Override | |
| public void onFailure(Call<MovieModel.MovieResponse> call, Throwable t) { | |
| } | |
| }); | |
| } | |
| private ArrayList<MovieModel> getMoviesFormCursor(Cursor c) { | |
| ArrayList<MovieModel> movies = new ArrayList<>(); | |
| if (c.moveToFirst()) { | |
| do { | |
| MovieModel movie = new MovieModel(); | |
| String movieId = c.getString(c.getColumnIndex(FavouriteMovie.COLUMN_MOVIE_ID)); | |
| movie.setId(Integer.valueOf(movieId)); | |
| String posterPath = c.getString(c.getColumnIndex(FavouriteMovie.COLUMN_POSTER_PATH)); | |
| movie.setPoster_path(posterPath); | |
| String overview = c.getString(c.getColumnIndex(FavouriteMovie.COLUMN_OVERVIEW)); | |
| movie.setOriginal_title(overview); | |
| String releaseDate = c.getString(c.getColumnIndex(FavouriteMovie.COLUMN_RELEASE_DATE)); | |
| movie.setRelease_date(releaseDate); | |
| String originalTitle = c.getString(c.getColumnIndex(FavouriteMovie.COLUMN_ORIGINAL_TITLE)); | |
| movie.setOriginal_title(originalTitle); | |
| String backDropPath = c.getString(c.getColumnIndex(FavouriteMovie.COLUMN_BACKDROP_PATH)); | |
| movie.setBackdrop_path(backDropPath); | |
| String voteAverage = c.getString(c.getColumnIndex(FavouriteMovie.COLUMN_VOTE_AVERAGE)); | |
| movie.setVote_average(Double.valueOf(voteAverage)); | |
| movies.add(movie); | |
| } while (c.moveToNext()); | |
| } | |
| c.close(); | |
| return movies; | |
| } | |
| @Override | |
| public void onResume() { | |
| super.onResume(); | |
| } | |
| @Override | |
| public void onPause() { | |
| super.onPause(); | |
| } | |
| @Override | |
| public View onCreateView(LayoutInflater inflater, ViewGroup container, | |
| Bundle savedInstanceState) { | |
| View rootView = inflater.inflate(R.layout.fragment_main, container, false); | |
| recyclerView = (RecyclerView) rootView.findViewById(R.id.movie_item_recyclerView); | |
| RecyclerView.LayoutManager manager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL); | |
| recyclerView.setLayoutManager(manager); | |
| return rootView; | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment