Advertisement
dadidu

MainActivity

Nov 19th, 2018
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 13.13 KB | None | 0 0
  1. package com.fajarnandagusti.moviecatalogueext;
  2.  
  3. import android.app.ProgressDialog;
  4. import android.content.Intent;
  5. import android.database.Cursor;
  6. import android.os.AsyncTask;
  7. import android.os.Bundle;
  8. import android.support.v4.view.MenuItemCompat;
  9. import android.support.v7.widget.LinearLayoutManager;
  10. import android.support.v7.widget.RecyclerView;
  11. import android.text.TextUtils;
  12. import android.support.design.widget.NavigationView;
  13. import android.support.v4.view.GravityCompat;
  14. import android.support.v4.widget.DrawerLayout;
  15. import android.support.v7.app.ActionBarDrawerToggle;
  16. import android.support.v7.app.AppCompatActivity;
  17. import android.support.v7.widget.Toolbar;
  18. import android.view.Menu;
  19. import android.view.MenuItem;
  20. import android.widget.SearchView;
  21. import android.widget.Toast;
  22.  
  23. import com.fajarnandagusti.moviecatalogueext.adapter.FavoriteAdapter;
  24. import com.fajarnandagusti.moviecatalogueext.adapter.MovieAdapter;
  25. import com.fajarnandagusti.moviecatalogueext.api.ApiService;
  26. import com.fajarnandagusti.moviecatalogueext.api.Server;
  27. import com.fajarnandagusti.moviecatalogueext.database.FavoriteHelper;
  28. import com.fajarnandagusti.moviecatalogueext.model.Favorite;
  29. import com.fajarnandagusti.moviecatalogueext.model.MovieResult;
  30. import com.fajarnandagusti.moviecatalogueext.model.Movies;
  31. import com.fajarnandagusti.moviecatalogueext.utils.Constanta;
  32.  
  33. import java.util.ArrayList;
  34. import java.util.List;
  35.  
  36. import butterknife.BindView;
  37. import butterknife.ButterKnife;
  38. import retrofit2.Call;
  39. import retrofit2.Callback;
  40. import retrofit2.Response;
  41.  
  42. import static com.fajarnandagusti.moviecatalogueext.database.DatabaseContract.FavoriteColumn.CONTENT_URI;
  43. import static com.fajarnandagusti.moviecatalogueext.utils.Constanta.API_KEY;
  44. import static com.fajarnandagusti.moviecatalogueext.utils.Constanta.KEY_PARCELABLE;
  45.  
  46.  
  47. public class MainActivity extends AppCompatActivity
  48.         implements NavigationView.OnNavigationItemSelectedListener {
  49.  
  50.     @BindView(R.id.recycler_movie)
  51.     RecyclerView recyclerView;
  52.  
  53.     ApiService API;
  54.     ProgressDialog loading;
  55.     List<Movies> listMovies;
  56.     private MovieAdapter movieAdapter;
  57.  
  58.     private FavoriteHelper favoriteHelper;
  59.     List<Favorite> favoriteList;
  60.  
  61.     private FavoriteAdapter favoriteAdapter;
  62.     private Cursor cursor;
  63.  
  64.  
  65.  
  66.  
  67.  
  68. //    Parcelable listState;
  69. //    public final static String LIST_STATE_KEY = "recycler_list_state";
  70.     @Override
  71.     protected void onCreate(Bundle savedInstanceState) {
  72.         super.onCreate(savedInstanceState);
  73.         setContentView(R.layout.activity_main);
  74.         Toolbar toolbar = findViewById(R.id.toolbar);
  75.         setSupportActionBar(toolbar);
  76.  
  77.         API = Server.getAPIService();
  78.         ButterKnife.bind(this);
  79.  
  80.         movieAdapter = new MovieAdapter(getApplicationContext(), listMovies);
  81.         recyclerView.setHasFixedSize(true);
  82.         recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
  83.         recyclerView.setAdapter(movieAdapter);
  84.  
  85. //        if (savedInstanceState == null) {
  86. //
  87. //            load();
  88. //
  89. //        }else{
  90. //        listMovies = savedInstanceState.getParcelableArrayList(KEY_PARCELABLE);
  91. //        movieAdapter = new MovieAdapter(getApplicationContext(), listMovies);
  92. //        recyclerView.setAdapter(movieAdapter);
  93. //    }
  94.  
  95.  
  96.         DrawerLayout drawer = findViewById(R.id.drawer_layout);
  97.         ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
  98.                 this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
  99.         drawer.addDrawerListener(toggle);
  100.         toggle.syncState();
  101.  
  102.         NavigationView navigationView = findViewById(R.id.nav_view);
  103.         navigationView.setNavigationItemSelectedListener(this);
  104.  
  105.  
  106.         onNavigationItemSelected(navigationView.getMenu().findItem(R.id.Home)); //default
  107.        // navigationView.setCheckedItem(R.id.Home);
  108.  
  109.  
  110.     }
  111.  
  112.     protected void onSaveInstanceState(Bundle outState) {
  113.         outState.putParcelableArrayList(KEY_PARCELABLE, new ArrayList<>(listMovies));
  114.         super.onSaveInstanceState(outState);
  115.     }
  116.  
  117. //    protected void onRestoreInstanceState(Bundle state) {
  118. //        super.onRestoreInstanceState(state);
  119. //        // Kembalikan state List dan posisi item
  120. //        if(state != null)
  121. //            listState = state.getParcelable(KEY_PARCELABLE);
  122. //
  123. //            movieAdapter = new MovieAdapter(getApplicationContext(), listMovies);
  124. //            recyclerView.setAdapter(movieAdapter);
  125. //    }
  126. //
  127. //    @Override
  128. //    protected void onResume() {
  129. //        super.onResume();
  130. //        if (listState != null) {
  131. //            movieAdapter = new MovieAdapter(getApplicationContext(), listMovies);
  132. //            recyclerView.setAdapter(movieAdapter);
  133. //
  134. //        }
  135. //    }
  136.  
  137.  
  138.     @Override
  139.     public void onBackPressed() {
  140.         DrawerLayout drawer = findViewById(R.id.drawer_layout);
  141.         if (drawer.isDrawerOpen(GravityCompat.START)) {
  142.             drawer.closeDrawer(GravityCompat.START);
  143.         } else {
  144.             super.onBackPressed();
  145.         }
  146.     }
  147.  
  148.     @Override
  149.     public boolean onCreateOptionsMenu(Menu menu) {
  150.         getMenuInflater().inflate(R.menu.main, menu);
  151.  
  152.         SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.search));
  153.         searchView.setQueryHint(getResources().getString(R.string.search));
  154.  
  155.         searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
  156.  
  157.             @Override
  158.             public boolean onQueryTextSubmit(String query) {
  159.                 cariFilm(query);
  160.                 return true;
  161.             }
  162.  
  163.             @Override
  164.             public boolean onQueryTextChange(String newText) {
  165.                 if (TextUtils.isEmpty(newText)){
  166.  
  167.                 }
  168.                 return false;
  169.             }
  170.         });
  171.  
  172.  
  173.         return true;
  174.     }
  175.  
  176.     @Override
  177.     public boolean onOptionsItemSelected(MenuItem item) {
  178.         // Handle action bar item clicks here. The action bar will
  179.         // automatically handle clicks on the Home/Up button, so long
  180.         // as you specify a parent activity in AndroidManifest.xml.
  181.         int id = item.getItemId();
  182.  
  183.         //noinspection SimplifiableIfStatement
  184.         if (id == R.id.action_settings) {
  185.             Intent setting = new Intent(getApplicationContext(), SettingActivity.class); //menu intent ke act setting
  186.             startActivity(setting);
  187.             return true;
  188.         }
  189.  
  190.         return super.onOptionsItemSelected(item);
  191.     }
  192.  
  193.     @SuppressWarnings("StatementWithEmptyBody")
  194.     @Override
  195.     public boolean onNavigationItemSelected(MenuItem item) {
  196.         // Handle navigation view item clicks here.
  197.      //   int id = item.getItemId();
  198.  
  199. //        if (id == R.id.home) {
  200. //
  201. //        } else if (id == R.id.now_playing) {
  202. //
  203. //        } else if (id == R.id.upcoming) {
  204. //
  205. //        } else if (id == R.id.favorite) {
  206. //
  207. //        } else if (id == R.id.nav_share) {
  208. //
  209. //        } else if (id == R.id.nav_send) {
  210. //
  211. //        }
  212.         switch (item.getItemId()) {
  213.             case R.id.Home :
  214.                 //tarik data all movie
  215.  
  216.                 allMovie();
  217.  
  218.                 break;
  219.             case R.id.now_playing :
  220.                 //tarik data nowplaying
  221.  
  222.                 nowPlaying();
  223.  
  224.  
  225.                 break;
  226.             case R.id.upcoming:
  227.                 //tarik data upcoming
  228.  
  229.                 upcoming();
  230.  
  231.                 break;
  232.  
  233.             case R.id.favorite:
  234.  
  235.                 getFavoriteList();
  236.                 break;
  237.         }
  238.  
  239.  
  240.         DrawerLayout drawer = findViewById(R.id.drawer_layout);
  241.         drawer.closeDrawer(GravityCompat.START);
  242.         return true;
  243.     }
  244.  
  245.  
  246.     private void setup(){
  247.  
  248.         recyclerView.setAdapter(movieAdapter);  //masukkan adaoter ke recycler
  249.     }
  250.  
  251.  
  252. // -------------------------------------------- METHOD AMBIL DATA MOVIE ------------------------------------
  253.     private void allMovie(){
  254.  
  255.         loading = ProgressDialog.show(this, null, "Loading", true, false);
  256.  
  257.         API.getAllMovies(API_KEY).enqueue(new Callback<MovieResult>() {
  258.             @Override
  259.             public void onResponse(Call<MovieResult> call, Response<MovieResult> response) {
  260.                 if (response.isSuccessful()){
  261.                     loading.dismiss();
  262.                     listMovies = response.body().getMovies();
  263.                     show();
  264.                 }else {
  265.                     loading.dismiss();
  266.                     Toast.makeText(getApplicationContext(), getString(R.string.error), Toast.LENGTH_SHORT).show();
  267.                 }
  268.             }
  269.  
  270.             @Override
  271.             public void onFailure(Call<MovieResult> call, Throwable t) {
  272.                 loading.dismiss();
  273.                 Toast.makeText(getApplicationContext(), getString(R.string.error), Toast.LENGTH_SHORT).show();
  274.             }
  275.         });
  276.     }
  277.  
  278.     private void nowPlaying(){
  279.  
  280.         loading = ProgressDialog.show(this, null, "Loading", true, false);
  281.  
  282.         API.getNowPlayingMovie(API_KEY).enqueue(new Callback<MovieResult>() {
  283.             @Override
  284.             public void onResponse(Call<MovieResult> call, Response<MovieResult> response) {
  285.                 if (response.isSuccessful()){
  286.                     loading.dismiss();
  287.                     listMovies = response.body().getMovies();
  288.                     show();
  289.                 }else {
  290.                     loading.dismiss();
  291.                     Toast.makeText(getApplicationContext(), getString(R.string.error), Toast.LENGTH_SHORT).show();
  292.                 }
  293.             }
  294.  
  295.             @Override
  296.             public void onFailure(Call<MovieResult> call, Throwable t) {
  297.                 loading.dismiss();
  298.                 Toast.makeText(getApplicationContext(), getString(R.string.error), Toast.LENGTH_SHORT).show();
  299.             }
  300.         });
  301.     }
  302.  
  303.     private void upcoming(){
  304.  
  305.         loading = ProgressDialog.show(this, null, "Loading", true, false);
  306.  
  307.         API.getUpComingMovie(API_KEY).enqueue(new Callback<MovieResult>() {
  308.             @Override
  309.             public void onResponse(Call<MovieResult> call, Response<MovieResult> response) {
  310.                 if (response.isSuccessful()){
  311.                     loading.dismiss();
  312.                     listMovies = response.body().getMovies();
  313.                     show();
  314.  
  315.                 }else {
  316.                     loading.dismiss();
  317.                     Toast.makeText(getApplicationContext(), getString(R.string.error), Toast.LENGTH_SHORT).show();
  318.                 }
  319.  
  320.             }
  321.  
  322.             @Override
  323.             public void onFailure(Call<MovieResult> call, Throwable t) {
  324.                 loading.dismiss();
  325.                 Toast.makeText(getApplicationContext(), getString(R.string.error), Toast.LENGTH_SHORT).show();
  326.             }
  327.         });
  328.     }
  329.  
  330.     // -------------------------------------------- METHOD CARI DATA MOVIE ------------------------------------
  331.  
  332.     private void cariFilm(String query){
  333.         API.getSearchMovie(API_KEY, Constanta.LANGUAGE , query, Constanta.page, Constanta.include_adult).enqueue(new Callback<MovieResult>() {
  334.             @Override
  335.             public void onResponse(Call<MovieResult> call, Response<MovieResult> response) {
  336.                 if (response.isSuccessful()){
  337.                     listMovies = response.body().getMovies();
  338.                     show();
  339.                 }
  340.                 else {
  341.                     Toast.makeText(getApplicationContext(), getString(R.string.error), Toast.LENGTH_LONG).show();
  342.                 }
  343.             }
  344.  
  345.             @Override
  346.             public void onFailure(Call<MovieResult> call, Throwable t) {
  347.                 Toast.makeText(getApplicationContext(), getString(R.string.internet), Toast.LENGTH_SHORT).show();
  348.             }
  349.         });
  350.     }
  351.  
  352.  
  353.     private void show(){
  354.         recyclerView.setAdapter(new MovieAdapter(getApplicationContext(), listMovies));
  355.         movieAdapter.notifyDataSetChanged();
  356.     }
  357.  
  358.     // -------------------------------------------- LOAD FAV MOVIE ------------------------------------
  359.     public void getFavoriteList(){
  360.         favoriteHelper = new FavoriteHelper(this);
  361.         favoriteHelper.open();
  362.         favoriteList = new ArrayList<>();
  363.  
  364.         new LoadFavoriteAsync().execute();
  365.  
  366.         favoriteAdapter = new FavoriteAdapter(this, favoriteList);
  367.         recyclerView.setAdapter(favoriteAdapter);
  368.  
  369.     }
  370.  
  371.     private class LoadFavoriteAsync extends AsyncTask<Void, Void, Cursor> {
  372.         @Override
  373.         protected Cursor doInBackground(Void... voids) {
  374.             return getContentResolver().query(CONTENT_URI, null, null, null, null);
  375.         }
  376.  
  377.         @Override
  378.         protected void onPreExecute(){
  379.  
  380.         }
  381.  
  382.         @Override
  383.         protected void onPostExecute(Cursor favorite){
  384.             super.onPostExecute(favorite);
  385.  
  386.             cursor = favorite;
  387.             favoriteAdapter.setFavoriteList(cursor);
  388.             favoriteAdapter.notifyDataSetChanged();
  389.             if (cursor.getCount() == 0){
  390.                 Toast.makeText(getApplicationContext(), getString(R.string.Empty), Toast.LENGTH_LONG).show();
  391.             }
  392.  
  393.         }
  394.     }
  395. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement