// BirdsArrayList Example // Source Code File: MainActivity.java package it372.sjost.testserialization; import android.content.Intent; import android.os.Bundle; import android.widget.Button; import android.widget.LinearLayout; import android.widget.Spinner; import androidx.appcompat.app.AppCompatActivity; import androidx.core.view.ViewCompat; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { // Declare instance variables. ArrayList birds; Spinner spn1; Button btn1, btn2; // onCreate fires when app is first created, or // recreated after being destroyed when app is rotated. @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set activity_main.xml as startup activity. setContentView(R.layout.activity_main); // Create objects for Spinner and button widgets. spn1 = findViewById(R.id.spinner); btn1 = findViewById(R.id.button); btn2 = findViewById(R.id.button2); // If bundle is not null, restore arraylist from // bundle. Otherwise instantiate empty arraylist. if (savedInstanceState != null) { birds = (ArrayList) savedInstanceState.getSerializable("arrlist"); } else { birds = new ArrayList( ); } // OnClickListener for button1 adds selected item // in spinner to arraylist. btn1.setOnClickListener( v -> { birds.add(spn1.getSelectedItem( ).toString( )); }); // OnClickListener for button2 // (a) creates a new intent, // (b) places the birds arraylist in a bundle, // (c) places the bundle in the intent, // (c) starts the new activity passing it the intent. btn2.setOnClickListener( v -> { Intent intent = new Intent(this, ShowBirdsActivity.class); Bundle bundle = new Bundle( ); bundle.putSerializable("arrlist", birds); intent.putExtras(bundle); startActivity(intent); }); } // Immediately before app is destroyed because emulator // is rotated, save the arraylist in a bundle. public void onSaveInstanceState(Bundle savedInstanceState) { super.onSaveInstanceState(savedInstanceState); savedInstanceState.putSerializable("arrlist", birds); } }