Este tutorial te dará una experiencia práctica en el uso de Android Spinner como un menú desplegable, pasando datos usando android bundle y mostrando una notificación emergente usando android toast . Crearemos una aplicación de Android que consta de un spinner simple que permite seleccionar un elemento de una lista desplegable. Mostraremos datos estáticos en el spinner. Seleccionar un elemento del spinner mostrará un mensaje de toast . Para pasar datos en forma de paquetes entre actividades, usaremos un botón para ejecutar una intención y mostrar los datos pasados a la siguiente pantalla.
Android Spinner
Android Spinner es simplemente una lista desplegable similar a la que se ve en otros lenguajes de programación, como en las páginas HTML. En Android, Spinner se utiliza para seleccionar un valor de un conjunto de valores. En el estado predeterminado, un spinner muestra su valor seleccionado actualmente. Al tocar el spinner, se muestra un menú desplegable con todos los demás valores disponibles, desde el cual el usuario puede seleccionar uno nuevo. Android Spinner está asociado con AdapterView. Por lo tanto, debemos configurar la clase del adaptador con Spinner.
Lista desplegable de Android
El siguiente archivo xml muestra el diseño de un spinner típico en Android que consta de una etiqueta de texto y una etiqueta de elemento spinner.
?xml version="1.0" encoding="utf-8"?LinearLayout xmlns_android="https://schemas.android.com/apk/res/android" android_orientation="vertical" android_padding="10dip" android_layout_width="fill_parent" android_layout_height="wrap_content" !-- Text Label -- TextView android_layout_width="fill_parent" android_layout_height="wrap_content" android_layout_marginTop="10dip" android_text="Category:" android_layout_marginBottom="5dp" / !-- Spinner Element -- Spinner android_id="@+id/spinner" android_layout_width="fill_parent" android_layout_height="wrap_content" android_prompt="@string/spinner_title" //LinearLayout
El siguiente fragmento muestra cómo utilizar un spinner en la clase de actividad.
Spinner spinner = (Spinner) findViewById(R.id.spinner);
Desarrollemos una aplicación donde pasamos el valor seleccionado del Spinner a la siguiente pantalla usando Bundles y mostramos un mensaje Toast del valor seleccionado al mismo tiempo.
Ejemplo de estructura de proyecto de Android Spinner
La imagen de abajo muestra el proyecto de Android Studio para el ejemplo de Spinner. Comencemos con el diseño de la clase MainActivity. Solo necesitamos agregar Button al basic_spinner.xmlarchivo.
RelativeLayout xmlns_android="https://schemas.android.com/apk/res/android" xmlns_tools="https://schemas.android.com/tools" android_layout_width="match_parent" android_layout_height="match_parent" android_paddingLeft="@dimen/activity_horizontal_margin" android_paddingRight="@dimen/activity_horizontal_margin" android_paddingTop="@dimen/activity_vertical_margin" android_paddingBottom="@dimen/activity_vertical_margin" tools_context=".MainActivity" LinearLayout android_orientation="vertical" android_padding="10dip" android_id="@+id/linear_layout" android_layout_width="fill_parent" android_layout_height="wrap_content" !-- Text Label -- TextView android_layout_width="fill_parent" android_layout_height="wrap_content" android_layout_marginTop="10dip" android_text="Category:" android_layout_marginBottom="5dp" / !-- Spinner Element -- Spinner android_id="@+id/spinner" android_layout_width="fill_parent" android_layout_height="wrap_content" android_prompt="@string/spinner_title" / /LinearLayout Button android_layout_width="wrap_content" android_layout_height="wrap_content" android_text="NEXT" android_id="@+id/button" android_layout_alignParentBottom="true" android_layout_centerHorizontal="true" android_layout_marginBottom="137dp" //RelativeLayout
El diseño del SecondActivityes el siguiente:
RelativeLayout xmlns_android="https://schemas.android.com/apk/res/android" xmlns_tools="https://schemas.android.com/tools" android_layout_width="match_parent" android_layout_height="match_parent" android_paddingLeft="@dimen/activity_horizontal_margin" android_paddingRight="@dimen/activity_horizontal_margin" android_paddingTop="@dimen/activity_vertical_margin" android_paddingBottom="@dimen/activity_vertical_margin" tools_context=".MainActivity" TextView android_layout_width="wrap_content" android_layout_height="wrap_content" android_textAppearance="?android:attr/textAppearanceMedium" android_text="Empty" android_id="@+id/txt_bundle" android_layout_alignParentTop="true" android_layout_centerHorizontal="true" android_layout_marginTop="103dp" //RelativeLayout
Aquí está el archivo de manifiesto de Android.AndroidManifest.xml
?xml version="1.0" encoding="utf-8"?manifest xmlns_android="https://schemas.android.com/apk/res/android" package="journaldev.com.spinners" application android_allowBackup="true" android_icon="@mipmap/ic_launcher" android_label="@string/app_name" android_theme="@style/AppTheme" activity android_name=".MainActivity" android_label="@string/app_name" intent-filter action android_name="android.intent.action.MAIN" / category android_name="android.intent.category.LAUNCHER" / /intent-filter /activity activity android_name=".SecondActivity"/ /application/manifest
Las clases MainActivityy SecondActivityjava se definen de la siguiente manera.
package journaldev.com.spinners;import android.app.Activity;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.Spinner;import android.widget.Toast;import java.util.ArrayList;import java.util.List;public class MainActivity extends Activity implements AdapterView.OnItemSelectedListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Spinner element final Spinner spinner = (Spinner) findViewById(R.id.spinner); Button button=(Button)findViewById(R.id.button); // Spinner click listener spinner.setOnItemSelectedListener(this); // Spinner Drop down elements ListString categories = new ArrayListString(); categories.add("Item 1"); categories.add("Item 2"); categories.add("Item 3"); categories.add("Item 4"); categories.add("Item 5"); categories.add("Item 6"); // Creating adapter for spinner ArrayAdapterString dataAdapter = new ArrayAdapterString(this, android.R.layout.simple_spinner_item, categories); // Drop down layout style - list view with radio button dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // attaching data adapter to spinner spinner.setAdapter(dataAdapter); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent= new Intent(MainActivity.this,SecondActivity.class); intent.putExtra("data",String.valueOf(spinner.getSelectedItem())); startActivity(intent); } }); } @Override public void onItemSelected(AdapterView? parent, View view, int position, long id) { // On selecting a spinner item String item = parent.getItemAtPosition(position).toString(); // Showing selected spinner item Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show(); } public void onNothingSelected(AdapterView? arg0) { // TODO Auto-generated method stub }}
package journaldev.com.spinners;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;public class SecondActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second_activity); TextView textView=(TextView) findViewById(R.id.txt_bundle); Bundle bundle=getIntent().getExtras(); String data=bundle.get("data").toString(); textView.setText(data); }}
En el código anterior, mostramos un mensaje de notificación cuando se selecciona un elemento del menú desplegable del control giratorio. Al hacer clic en el botón, pasamos el elemento seleccionado del control giratorio como un valor de cadena a la siguiente actividad mediante el paquete de Android. Luego, los datos se recuperan del paquete y se muestran en un TextView. Rápido, fácil y simple, ¿no es así? Las capturas de pantalla de la aplicación se muestran a continuación. La estoy ejecutando en uno de los emuladores. La primera pantalla muestra el contenido de la lista desplegable cuando se abre el control giratorio. Después de seleccionar un elemento, aparece un mensaje de notificación de notificación durante un tiempo. Después de un tiempo, la notificación de notificación desaparece como se muestra en la siguiente imagen. No nos impide hacer clic en el siguiente botón. Finalmente, en la segunda pantalla, el elemento seleccionado de la lista desplegable se recupera mediante Bundles y se muestra en TextView. A continuación, se muestra una ejecución de muestra de nuestra aplicación de ejemplo de control giratorio de Android en el emulador. Eso es todo por ahora, analizaremos Android ListView en la próxima publicación. Puede descargar el proyecto de ejemplo Android Spinner, Bundle y Toast desde el siguiente enlace.
Descargar el proyecto de ejemplo Spinner, Bundle y Toast de Android
Referencia: Doc Oficial