Created
April 8, 2018 02:07
-
-
Save eltonjhony/6886e7bbb040195a9d427ea496f482a8 to your computer and use it in GitHub Desktop.
This file contains 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.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