Skip to content

Instantly share code, notes, and snippets.

@eltonjhony
Created April 8, 2018 02:07
Show Gist options
  • Save eltonjhony/6886e7bbb040195a9d427ea496f482a8 to your computer and use it in GitHub Desktop.
Save eltonjhony/6886e7bbb040195a9d427ea496f482a8 to your computer and use it in GitHub Desktop.
package com.example.dodo.popularmoviesfinal.Activities;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import com.example.dodo.popularmoviesfinal.Adapters.MoviesAdapter;
import com.example.dodo.popularmoviesfinal.Models.MovieResponse;
import com.example.dodo.popularmoviesfinal.Models.MoviesData;
import com.example.dodo.popularmoviesfinal.Network.ApiInterface;
import com.example.dodo.popularmoviesfinal.R;
import java.util.ArrayList;
import java.util.List;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
/**
* The correct would be create a object that contains a list of movies.
* Then, you can create the API interface returns that responde object.
*/
public class MainActivity extends AppCompatActivity implements MoviesAdapter.MoviesAdapterOnClickHandler {
private static final String TAG = MainActivity.class.getSimpleName();
private final static String API_KEY = "90cfeb2390166bcd501adabe6f68e59a";
private static final String BASE_URL = "http://api.themoviedb.org/3/";
private static Retrofit retrofit = null;
private MoviesAdapter moviesAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setupAdapter();
fetchMostPopular();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.setting_menu, menu);
//set menu item title based on sort key
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.most_popular) {
fetchMostPopular();
return true;
}
if (id == R.id.top_rated) {
fetchTopRated();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onClick(MoviesData moviesData) {
Intent intent = new Intent(this, Details_Activity.class);
intent.putExtra("movieModel", moviesData);
startActivity(intent);
}
private void setupAdapter() {
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
moviesAdapter = new MoviesAdapter(new ArrayList<MoviesData>(), this, this);
recyclerView.setAdapter(moviesAdapter);
recyclerView.setLayoutManager(new GridLayoutManager(MainActivity.this, 2));
recyclerView.setHasFixedSize(true);
}
private void fetchMostPopular() {
if (retrofit == null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
ApiInterface movieApiService = retrofit.create(ApiInterface.class);
Call<MovieResponse> call = movieApiService.getPopular(API_KEY);
call.enqueue(new Callback<MovieResponse>() {
@Override
public void onResponse(Call<MovieResponse> call, Response<MovieResponse> response) {
List<MoviesData> mMovieList = response.body().getResults();
moviesAdapter.setItems(mMovieList);
}
@Override
public void onFailure(Call<MovieResponse> call, Throwable t) {
// Log error here since request failed
Log.e(TAG, t.toString());
}
});
}
private void fetchTopRated() {
if (retrofit == null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
ApiInterface movieApiService = retrofit.create(ApiInterface.class);
Call<MovieResponse> call = movieApiService.getTop_rated(API_KEY);
call.enqueue(new Callback<MovieResponse>() {
@Override
public void onResponse(Call<MovieResponse> call, Response<MovieResponse> response) {
List<MoviesData> mMovieList = response.body().getResults();
moviesAdapter.setItems(mMovieList);
}
@Override
public void onFailure(Call<MovieResponse> call, Throwable t) {
// Log error here since request failed
Log.e(TAG, t.toString());
}
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment