Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package info.rekayasa.numovie;
- import android.content.Intent;
- import android.net.Uri;
- import android.os.AsyncTask;
- import android.os.PersistableBundle;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.Menu;
- import android.view.MenuItem;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.BaseAdapter;
- import android.widget.GridView;
- import android.widget.ImageView;
- import android.widget.ProgressBar;
- import com.squareup.picasso.Picasso;
- import org.json.JSONArray;
- import org.json.JSONException;
- import org.json.JSONObject;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.net.HttpURLConnection;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.ArrayList;
- import java.util.List;
- import static android.provider.MediaStore.Audio.AudioColumns.TITLE_KEY;
- public class MainActivity extends AppCompatActivity {
- private static final String LOG_TAG = "MainActivity";
- String url = "http://api.themoviedb.org/3/movie/popular";
- Boolean isPopular;
- // MenuItem item;
- private Menu menu;
- ProgressBar progressBar;
- List<Movie> movieList;
- private static final String TITLE_KEY ="tile";
- private static final String ITEM_TITLE_KEY = "item_title";
- private static final String URL_KEY = "url";
- private static final String IS_POPULAR_KEY = "is_popular";
- String itemTitle;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- progressBar = (ProgressBar) findViewById(R.id.progressBar);
- if (savedInstanceState == null) {
- setTitle(getResources().getString(R.string.title_popular));
- isPopular = true;
- new MovieTask().execute(url);
- } else {
- setTitle(savedInstanceState.getString(TITLE_KEY));
- isPopular = savedInstanceState.getBoolean(IS_POPULAR_KEY);
- url = savedInstanceState.getString(URL_KEY);
- new MovieTask().execute(url);
- itemTitle = savedInstanceState.getString(ITEM_TITLE_KEY);
- // toggle();
- }
- }
- @Override
- public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- String title = getSupportActionBar().getTitle().toString();
- MenuItem item = menu.findItem(R.id.action_toggle);
- String menuItem = item.getTitle().toString();
- String currentUrl = url;
- Boolean isPopularStatus = isPopular;
- outState.putString(TITLE_KEY, title);
- outState.putString(ITEM_TITLE_KEY, menuItem);
- outState.putString(URL_KEY, currentUrl);
- outState.putBoolean(IS_POPULAR_KEY, isPopularStatus);
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.menu_main, menu);
- this.menu = menu;
- return true;
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- int id = item.getItemId();
- if (id == R.id.action_toggle) {
- toggle();
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
- @Override
- public boolean onPrepareOptionsMenu(Menu menu) {
- MenuItem item = menu.findItem(R.id.action_toggle);
- if (itemTitle != null) {
- item.setTitle(itemTitle);
- System.out.println("item title: " + itemTitle);
- }
- return super.onPrepareOptionsMenu(menu);
- }
- private void toggle() {
- MenuItem item = menu.findItem(R.id.action_toggle);
- if (isPopular) {
- setTitle(getResources().getString(R.string.title_top_rated));
- itemTitle = getResources().getString(R.string.popular);
- item.setTitle(getResources().getString(R.string.popular));
- url = "http://api.themoviedb.org/3/movie/top_rated";
- new MovieTask().execute(url);
- isPopular = false;
- } else {
- item.setTitle(getResources().getString(R.string.top_rated));
- itemTitle = getResources().getString(R.string.popular);
- setTitle(getResources().getString(R.string.title_popular));
- url = "http://api.themoviedb.org/3/movie/popular";
- new MovieTask().execute(url);
- isPopular = true;
- }
- }
- private class MovieTask extends AsyncTask<String, Void, List<Movie>> {
- @Override
- protected void onPreExecute() {
- super.onPreExecute();
- progressBar.setVisibility(View.VISIBLE);
- }
- @Override
- protected List<Movie> doInBackground(String... strings) {
- List<Movie> data = new ArrayList<>();
- HttpURLConnection urlConnection = null;
- BufferedReader reader = null;
- String jsonMovies = "";
- try {
- final String BASE_URL = strings[0];
- final String API_KEY = "?api_key=3f532695bc2452d24f8e1f6950944b9d";
- Uri builtUri = Uri.parse(BASE_URL + API_KEY).buildUpon()
- .build();
- URL url = new URL(builtUri.toString());
- Log.d(LOG_TAG, "Built URI: " + builtUri.toString());
- // Create request to themoviedb and open connection
- urlConnection = (HttpURLConnection)url.openConnection();
- urlConnection.setRequestMethod("GET");
- urlConnection.connect();
- // Read the input stream into a String
- InputStream inputStream = urlConnection.getInputStream();
- StringBuffer buffer = new StringBuffer();
- if (inputStream == null) {
- return null;
- }
- reader = new BufferedReader(new InputStreamReader(inputStream));
- String line;
- while ((line = reader.readLine()) != null) {
- buffer.append(line + "\n");
- }
- if (buffer.length() == 0) {
- // Stream is empty. No need to parse
- return null;
- }
- jsonMovies = buffer.toString();
- Log.d(LOG_TAG, jsonMovies);
- JSONObject movies = new JSONObject(jsonMovies);
- JSONArray dataJson = movies.getJSONArray("results");
- for (int i = 0; i < dataJson.length(); i++) {
- Movie movie = new Movie();
- JSONObject jsonObj = dataJson.getJSONObject(i);
- movie.setId(jsonObj.getInt("id"));
- movie.setPoster_path("http://image.tmdb.org/t/p/w185"+jsonObj.getString("poster_path"));
- movie.setBackdrop_path("http://image.tmdb.org/t/p/w780"+jsonObj.getString("backdrop_path"));
- movie.setRelease_date(jsonObj.getString("release_date"));
- movie.setTitle(jsonObj.getString("title"));
- movie.setOverview(jsonObj.getString("overview"));
- movie.setVote_average(jsonObj.getLong("vote_average"));
- data.add(movie);
- }
- } catch (MalformedURLException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (JSONException e) {
- e.printStackTrace();
- }
- return data;
- }
- @Override
- protected void onPostExecute(final List<Movie> movies) {
- super.onPostExecute(movies);
- progressBar.setVisibility(View.INVISIBLE);
- // refreshUi(movies);
- GridView gvMovies = (GridView) findViewById(R.id.gv_movie);
- MoviesAdapter adapter = new MoviesAdapter(getApplicationContext(), movies);
- gvMovies.setAdapter(adapter);
- gvMovies.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
- Movie movie = movies.get(position);
- Intent intent = new Intent(MainActivity.this, DetailActivity.class);
- intent.putExtra("poster_path",movie.getPoster_path());
- intent.putExtra("backdrop_path",movie.getBackdrop_path());
- intent.putExtra("year",movie.getRelease_date());
- intent.putExtra("release_date",movie.getRelease_date());
- intent.putExtra("overview",movie.getOverview());
- intent.putExtra("title",movie.getTitle());
- intent.putExtra("vote_average",movie.getVote_average());
- intent.putExtra("id",movie.getId());
- startActivity(intent);
- }
- });
- }
- }
- }
Add Comment
Please, Sign In to add comment