Home > Sample essays > How to Easily Implement MainActivity on AppCompatActivity for Movies Listing

Essay: How to Easily Implement MainActivity on AppCompatActivity for Movies Listing

Essay details and download:

  • Subject area(s): Sample essays
  • Reading time: 2 minutes
  • Price: Free download
  • Published: 1 April 2019*
  • Last Modified: 23 July 2024
  • File format: Text
  • Words: 559 (approx)
  • Number of pages: 3 (approx)

Text preview of this essay:

This page of the essay has 559 words.



public class MainActivity extends AppCompatActivity implements SharedPreferences.OnSharedPreferenceChangeListener {

    private RecyclerView recyclerView;

    private MoviesAdapter adapter;

    private List<Movie> movieList;

    ProgressDialog pd;

    private SwipeRefreshLayout swipeContainer;

    public static final String LOG_TAG = MoviesAdapter.class.getName ();

    @Override

    protected void onCreate(Bundle savedInstanceState) {

   super.onCreate(savedInstanceState);

   setContentView(R.layout.activity_main);

   initViews();

   swipeContainer = (SwipeRefreshLayout) findViewById ( R.id.main_content );

   swipeContainer.setColorSchemeResources ( android.R.color.holo_orange_dark );

   swipeContainer.setOnRefreshListener ( new SwipeRefreshLayout.OnRefreshListener () {

  @Override

  public void onRefresh() {

   initViews();

   Toast.makeText ( MainActivity.this, "Peliculas actualizadas", Toast.LENGTH_SHORT ).show ();

  }

   } );

    }

    public Activity getActivity(){

   Context context = this;

   while (context instanceof ContextWrapper){

  if (context instanceof Activity){

   return (Activity) context;

  }

  context = ((ContextWrapper) context).getBaseContext ();

   }

   return  null;

    }

    private void initViews(){

   pd = new ProgressDialog ( this );

   pd.setMessage ( "Cargando películas…" );

   pd.setCancelable ( false );

   pd.show ();

   recyclerView = (RecyclerView) findViewById ( R.id.recycler_view );

   movieList = new ArrayList<> (  );

   adapter = new MoviesAdapter (this, movieList);

   if (getActivity().getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){

  recyclerView.setLayoutManager ( new GridLayoutManager ( this, 2 ) );

   }

   else{

  recyclerView.setLayoutManager ( new GridLayoutManager ( this, 4 ) );

   }

   recyclerView.setItemAnimator ( new DefaultItemAnimator () );

   recyclerView.setAdapter ( adapter );

   adapter.notifyDataSetChanged();

   checkSortOrder ();

    }

    private void loadJSON(){

   try{

  if (com.example.kevin.peliculasapp.BuildConfig.THE_MOVIE_DB_API_TOKEN.isEmpty ()){

   Toast.makeText ( getApplicationContext (), "Por favor obten primero la clave de la API desde themoviedb.org", Toast.LENGTH_SHORT ).show ();

   pd.dismiss ();

   return;

  }

  Client Client = new Client ();

  Service apiService =

  Client.getClient ().create ( Service.class );

   final Call<MoviesResponse> call = apiService.getPopularMovies ();

  call.enqueue ( new Callback<MoviesResponse> () {

   @Override

   public void onResponse(Call<MoviesResponse> call, Response<MoviesResponse> response) {

  List<Movie> movies =  response.body ().getResults ();

  recyclerView.setAdapter ( new MoviesAdapter (getApplicationContext (), movies) );

  recyclerView.smoothScrollToPosition ( 0 );

  if (swipeContainer.isRefreshing ()){

   swipeContainer.setRefreshing ( false );

  }

  pd.dismiss ();

   }

   @Override

   public void onFailure(retrofit2.Call<MoviesResponse> call, Throwable t) {

  Log.d ("Error", t.getMessage ());

  Toast.makeText ( MainActivity.this, "Error ¡No se pueden cargar las peliculas!", Toast.LENGTH_SHORT ).show ();

   }

  } );

   }catch (Exception e){

  Log.d ( "Error", e.getMessage () );

  Toast.makeText ( this, e.toString (), Toast.LENGTH_SHORT ).show ();

   }

    }

    private void loadJSON1(){

   try{

  if (com.example.kevin.peliculasapp.BuildConfig.THE_MOVIE_DB_API_TOKEN.isEmpty ()){

   Toast.makeText ( getApplicationContext (), "Por favor obten primero la clave de la API desde themoviedb.org", Toast.LENGTH_SHORT ).show ();

   pd.dismiss ();

   return;

  }

  Client Client = new Client ();

  Service apiService =

  Client.getClient ().create ( Service.class );

  final Call<MoviesResponse> call = apiService.getTopRatedMovies ();

  call.enqueue ( new Callback<MoviesResponse> () {

   @Override

   public void onResponse(Call<MoviesResponse> call, Response<MoviesResponse> response) {

  List<Movie> movies =  response.body ().getResults ();

  recyclerView.setAdapter ( new MoviesAdapter (getApplicationContext (), movies) );

  recyclerView.smoothScrollToPosition ( 0 );

  if (swipeContainer.isRefreshing ()){

   swipeContainer.setRefreshing ( false );

  }

  pd.dismiss ();

   }

   @Override

   public void onFailure(retrofit2.Call<MoviesResponse> call, Throwable t) {

  Log.d ("Error", t.getMessage ());

  Toast.makeText ( MainActivity.this, "Error ¡No se pueden cargar las peliculas!", Toast.LENGTH_SHORT ).show ();

   }

  } );

   }catch (Exception e){

  Log.d ( "Error", e.getMessage () );

  Toast.makeText ( this, e.toString (), Toast.LENGTH_SHORT ).show ();

   }

    }

    @Override

    public boolean onCreateOptionsMenu(Menu menu){

   getMenuInflater ().inflate ( R.menu.menu_main, menu );

   return true;

    }

    @Override

    public boolean onOptionsItemSelected(MenuItem item){

   switch (item.getItemId ()){

  case R.id.menu_settings:

   Intent intent = new Intent ( this, SettingsActivity.class );

   startActivity ( intent );

   return true;

  default:

   return super.onOptionsItemSelected ( item );

   }

    }

    @Override

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s){

   Log.d ( LOG_TAG, "Ajustes actualizados" );

   checkSortOrder();

    }

    private void checkSortOrder(){

   SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences ( this );

   String sortOrder = preferences.getString (

   this.getString ( R.string.pref_sort_order_key ),

   this.getString ( R.string.pref_most_popular )

   );

   if (sortOrder.equals ( this.getString ( R.string.pref_most_popular ) )){

  Log.d ( LOG_TAG, "Ordenando por más populares" );

  loadJSON ();

   }

   else{

  Log.d ( LOG_TAG, "Ordenando por valoración media" );

  loadJSON1 ();

   }

    }

    @Override

    public void onResume(){

   super.onResume ();

   if (movieList.isEmpty ()){

  checkSortOrder ();

   }

    }

}

About this essay:

If you use part of this page in your own work, you need to provide a citation, as follows:

Essay Sauce, How to Easily Implement MainActivity on AppCompatActivity for Movies Listing. Available from:<https://www.essaysauce.com/sample-essays/2017-11-30-1512026871/> [Accessed 02-05-26].

These Sample essays have been submitted to us by students in order to help you with your studies.

* This essay may have been previously published on EssaySauce.com and/or Essay.uk.com at an earlier date than indicated.