Skip to content

Instantly share code, notes, and snippets.

@jimitjaishwal
Created July 30, 2016 07:41
Show Gist options
  • Select an option

  • Save jimitjaishwal/36fee5989f0dd178cf86cbb0c00adad4 to your computer and use it in GitHub Desktop.

Select an option

Save jimitjaishwal/36fee5989f0dd178cf86cbb0c00adad4 to your computer and use it in GitHub Desktop.
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