Que tal, hoy vengo a compartir un ejemplo practico de como llenar un objeto Spinner por medio de clase y aparte como manipularlo, sin más por el momento les comparto fragmentos de código y el ejemplo a descargar por medio de github.
El ejemplo muestra 2 tipos de spinner el clásico y el que se comporta por medio de un dialogo.
Empezamos por nuestro MainActivity.java
Dentro de nuestro MainActivity tenemos un método en el cual hace la magia de llenar nuestro spinner, definiendo un objeto ArrayAdapter donde le seteamos el el ArrayList que llenams previamente.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
package com.desarrollohidrocalido.llenarspinnerdesarrollohidrocalido; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.Toast; import com.desarrollohidrocalido.llenarspinnerdesarrollohidrocalido.clasesSpinners.EjemploSpinner; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { Spinner spinnerEjemplo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); llenarSpinnersEjemplo(1); llenarSpinnersEjemplo(2); } private void llenarSpinnersEjemplo(int numSpinner) { ArrayList<EjemploSpinner> list = new ArrayList<>(); list.add(new EjemploSpinner(0,"Seleccionar...")); for (int i=1;i<5;i++){ list.add(new EjemploSpinner(i,"Ejemplo "+i)); } switch (numSpinner){ case 1: spinnerEjemplo = (Spinner) findViewById(R.id.spinnerEjemplo1); break; case 2: spinnerEjemplo = (Spinner) findViewById(R.id.spinnerEjemplo2); break; } ArrayAdapter<EjemploSpinner> adapter = new ArrayAdapter<EjemploSpinner>(this, R.layout.spinner_layaout_ejemplo, list); adapter.setDropDownViewResource(R.layout.spinner_layaout_ejemplo); spinnerEjemplo.setAdapter(adapter); spinnerEjemplo.setOnItemSelectedListener( new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { if ((pos!=0) && (id!=0)) { Object item = parent.getItemAtPosition(pos); int idSeleccionado = ((EjemploSpinner) item).getId(); String nombre = ((EjemploSpinner) item).getNombre(); Toast.makeText(getBaseContext(), nombre, Toast.LENGTH_SHORT).show(); } } public void onNothingSelected(AdapterView<?> parent) { } }); } } |
Continuamos con nuestros XML : activity_main.xml, aquí simplemente colocamos 2 objetos tipo spinner.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.desarrollohidrocalido.llenarspinnerdesarrollohidrocalido.MainActivity"> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:text="Ejemplo 1 spinner:" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/txtEjemplo1" android:textAlignment="center" /> <Spinner android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/spinnerEjemplo1" /> <TextView android:text="Ejemplo 2 spinner:" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/txtEjemplo2" android:textAlignment="center" /> <Spinner android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/spinnerEjemplo2" android:spinnerMode="dialog" /> </LinearLayout> </RelativeLayout> |
Nuestra clase con la que haremos interactuar el spinner, dicha clase tendrá declarada los valores que se le asignará al spinner, con sus respectivos getters y setters.
Solo tener cuidado y contemplar que en el método toString debemos de meter solo 1 valor, este valor será el que se mostrara en la lista de spinner.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
package com.desarrollohidrocalido.llenarspinnerdesarrollohidrocalido.clasesSpinners; /** * Created by diego.lira on 29/04/2017. */ public class EjemploSpinner { int id; String nombre; public EjemploSpinner(int id, String nombre) { this.id = id; this.nombre = nombre; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } @Override public String toString() { return nombre; } } |