rachmadi

NuMovie MainActivity

Feb 8th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.09 KB | None | 0 0
  1. package info.rekayasa.numovie;
  2.  
  3. import android.content.Intent;
  4. import android.net.Uri;
  5. import android.os.AsyncTask;
  6. import android.os.PersistableBundle;
  7. import android.support.v7.app.AppCompatActivity;
  8. import android.os.Bundle;
  9. import android.util.Log;
  10. import android.view.Menu;
  11. import android.view.MenuItem;
  12. import android.view.View;
  13. import android.widget.AdapterView;
  14. import android.widget.BaseAdapter;
  15. import android.widget.GridView;
  16. import android.widget.ImageView;
  17. import android.widget.ProgressBar;
  18.  
  19. import com.squareup.picasso.Picasso;
  20.  
  21. import org.json.JSONArray;
  22. import org.json.JSONException;
  23. import org.json.JSONObject;
  24.  
  25. import java.io.BufferedReader;
  26. import java.io.IOException;
  27. import java.io.InputStream;
  28. import java.io.InputStreamReader;
  29. import java.net.HttpURLConnection;
  30. import java.net.MalformedURLException;
  31. import java.net.URL;
  32. import java.util.ArrayList;
  33. import java.util.List;
  34.  
  35. import static android.provider.MediaStore.Audio.AudioColumns.TITLE_KEY;
  36.  
  37. public class MainActivity extends AppCompatActivity {
  38.  
  39.     private static final String LOG_TAG = "MainActivity";
  40.  
  41.     String url = "http://api.themoviedb.org/3/movie/popular";
  42.     Boolean isPopular;
  43. //    MenuItem item;
  44.  
  45.     private Menu menu;
  46.  
  47.     ProgressBar progressBar;
  48.  
  49.     List<Movie> movieList;
  50.  
  51.     private static final String TITLE_KEY ="tile";
  52.     private static final String ITEM_TITLE_KEY = "item_title";
  53.     private static final String URL_KEY = "url";
  54.     private static final String IS_POPULAR_KEY = "is_popular";
  55.     String itemTitle;
  56.  
  57.     @Override
  58.     protected void onCreate(Bundle savedInstanceState) {
  59.         super.onCreate(savedInstanceState);
  60.         setContentView(R.layout.activity_main);
  61.  
  62.         progressBar = (ProgressBar) findViewById(R.id.progressBar);
  63.  
  64.         if (savedInstanceState == null) {
  65.             setTitle(getResources().getString(R.string.title_popular));
  66.             isPopular = true;
  67.             new MovieTask().execute(url);
  68.         } else {
  69.             setTitle(savedInstanceState.getString(TITLE_KEY));
  70.             isPopular = savedInstanceState.getBoolean(IS_POPULAR_KEY);
  71.             url = savedInstanceState.getString(URL_KEY);
  72.             new MovieTask().execute(url);
  73.             itemTitle = savedInstanceState.getString(ITEM_TITLE_KEY);
  74. //            toggle();
  75.  
  76.         }
  77.     }
  78.  
  79.     @Override
  80.     public void onSaveInstanceState(Bundle outState) {
  81.         super.onSaveInstanceState(outState);
  82.  
  83.         String title = getSupportActionBar().getTitle().toString();
  84.         MenuItem item = menu.findItem(R.id.action_toggle);
  85.         String menuItem = item.getTitle().toString();
  86.         String currentUrl = url;
  87.         Boolean isPopularStatus = isPopular;
  88.         outState.putString(TITLE_KEY, title);
  89.         outState.putString(ITEM_TITLE_KEY, menuItem);
  90.         outState.putString(URL_KEY, currentUrl);
  91.         outState.putBoolean(IS_POPULAR_KEY, isPopularStatus);
  92.  
  93.     }
  94.  
  95.     @Override
  96.     public boolean onCreateOptionsMenu(Menu menu) {
  97.         getMenuInflater().inflate(R.menu.menu_main, menu);
  98.         this.menu = menu;
  99.         return true;
  100.     }
  101.  
  102.     @Override
  103.     public boolean onOptionsItemSelected(MenuItem item) {
  104.         int id = item.getItemId();
  105.         if (id == R.id.action_toggle) {
  106.             toggle();
  107.             return true;
  108.         }
  109.         return super.onOptionsItemSelected(item);
  110.     }
  111.  
  112.     @Override
  113.     public boolean onPrepareOptionsMenu(Menu menu) {
  114.         MenuItem item = menu.findItem(R.id.action_toggle);
  115.         if (itemTitle != null) {
  116.             item.setTitle(itemTitle);
  117.             System.out.println("item title: " + itemTitle);
  118.         }
  119.         return super.onPrepareOptionsMenu(menu);
  120.     }
  121.  
  122.     private void toggle() {
  123.         MenuItem item = menu.findItem(R.id.action_toggle);
  124.         if (isPopular) {
  125.             setTitle(getResources().getString(R.string.title_top_rated));
  126.             itemTitle = getResources().getString(R.string.popular);
  127.             item.setTitle(getResources().getString(R.string.popular));
  128.             url = "http://api.themoviedb.org/3/movie/top_rated";
  129.             new MovieTask().execute(url);
  130.             isPopular = false;
  131.         } else {
  132.             item.setTitle(getResources().getString(R.string.top_rated));
  133.             itemTitle = getResources().getString(R.string.popular);
  134.             setTitle(getResources().getString(R.string.title_popular));
  135.             url = "http://api.themoviedb.org/3/movie/popular";
  136.             new MovieTask().execute(url);
  137.             isPopular = true;
  138.         }
  139.     }
  140.  
  141.     private class MovieTask extends AsyncTask<String, Void, List<Movie>> {
  142.  
  143.         @Override
  144.         protected void onPreExecute() {
  145.             super.onPreExecute();
  146.             progressBar.setVisibility(View.VISIBLE);
  147.         }
  148.  
  149.         @Override
  150.         protected List<Movie> doInBackground(String... strings) {
  151.  
  152.             List<Movie> data = new ArrayList<>();
  153.  
  154.             HttpURLConnection urlConnection = null;
  155.             BufferedReader reader = null;
  156.             String jsonMovies = "";
  157.             try {
  158.                 final String BASE_URL = strings[0];
  159.                 final String API_KEY = "?api_key=3f532695bc2452d24f8e1f6950944b9d";
  160.                 Uri builtUri = Uri.parse(BASE_URL + API_KEY).buildUpon()
  161.                         .build();
  162.  
  163.                 URL url = new URL(builtUri.toString());
  164.                 Log.d(LOG_TAG, "Built URI: " + builtUri.toString());
  165.  
  166.                 // Create request to themoviedb and open connection
  167.                 urlConnection = (HttpURLConnection)url.openConnection();
  168.                 urlConnection.setRequestMethod("GET");
  169.                 urlConnection.connect();
  170.  
  171.                 // Read the input stream into a String
  172.                 InputStream inputStream = urlConnection.getInputStream();
  173.                 StringBuffer buffer = new StringBuffer();
  174.                 if (inputStream == null) {
  175.                     return null;
  176.                 }
  177.  
  178.                 reader = new BufferedReader(new InputStreamReader(inputStream));
  179.  
  180.                 String line;
  181.                 while ((line = reader.readLine()) != null) {
  182.                     buffer.append(line + "\n");
  183.                 }
  184.  
  185.                 if (buffer.length() == 0) {
  186.                     // Stream is empty. No need to parse
  187.                     return null;
  188.                 }
  189.  
  190.                 jsonMovies = buffer.toString();
  191.                 Log.d(LOG_TAG, jsonMovies);
  192.                 JSONObject movies = new JSONObject(jsonMovies);
  193.  
  194.                 JSONArray dataJson = movies.getJSONArray("results");
  195.                 for (int i = 0; i < dataJson.length(); i++) {
  196.                     Movie movie = new Movie();
  197.                     JSONObject jsonObj = dataJson.getJSONObject(i);
  198.  
  199.                     movie.setId(jsonObj.getInt("id"));
  200.                     movie.setPoster_path("http://image.tmdb.org/t/p/w185"+jsonObj.getString("poster_path"));
  201.                     movie.setBackdrop_path("http://image.tmdb.org/t/p/w780"+jsonObj.getString("backdrop_path"));
  202.                     movie.setRelease_date(jsonObj.getString("release_date"));
  203.                     movie.setTitle(jsonObj.getString("title"));
  204.                     movie.setOverview(jsonObj.getString("overview"));
  205.                     movie.setVote_average(jsonObj.getLong("vote_average"));
  206.                     data.add(movie);
  207.                 }
  208.  
  209.             } catch (MalformedURLException e) {
  210.                 e.printStackTrace();
  211.             } catch (IOException e) {
  212.                 e.printStackTrace();
  213.             } catch (JSONException e) {
  214.                 e.printStackTrace();
  215.             }
  216.  
  217.             return data;
  218.         }
  219.  
  220.         @Override
  221.         protected void onPostExecute(final List<Movie> movies) {
  222.             super.onPostExecute(movies);
  223.             progressBar.setVisibility(View.INVISIBLE);
  224.  
  225. //            refreshUi(movies);
  226.  
  227.             GridView gvMovies = (GridView) findViewById(R.id.gv_movie);
  228.             MoviesAdapter adapter = new MoviesAdapter(getApplicationContext(), movies);
  229.             gvMovies.setAdapter(adapter);
  230.             gvMovies.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  231.                 @Override
  232.                 public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
  233.                     Movie movie = movies.get(position);
  234.                     Intent intent = new Intent(MainActivity.this, DetailActivity.class);
  235.                     intent.putExtra("poster_path",movie.getPoster_path());
  236.                     intent.putExtra("backdrop_path",movie.getBackdrop_path());
  237.                     intent.putExtra("year",movie.getRelease_date());
  238.                     intent.putExtra("release_date",movie.getRelease_date());
  239.                     intent.putExtra("overview",movie.getOverview());
  240.                     intent.putExtra("title",movie.getTitle());
  241.                     intent.putExtra("vote_average",movie.getVote_average());
  242.                     intent.putExtra("id",movie.getId());
  243.  
  244.                     startActivity(intent);
  245.                 }
  246.             });
  247.  
  248.         }
  249.     }
  250. }
Add Comment
Please, Sign In to add comment