8 abril, 2025
Llenar un Spinner con Sqlite y un Adaptador
Existen varias formas de inflar un spinner, es este caso usaremos un adaptador que permite extender la cantidad de datos consultados a la BD Sqlite

Suscríbete a nuestro canal en Youtube
Suscríbirse¿Quieres mostrar una lista de opciones en un Spinner usando datos de una base SQLite en Android Studio? Llenar un Spinner con datos dinámicos es una tarea común en el desarrollo de apps Android, y hacerlo con SQLite es más sencillo de lo que parece si tienes tus clases bien definidas. En este tutorial, te explico cómo lograrlo paso a paso: desde crear una clase modelo hasta poblar el Spinner con datos de una base de datos local. ¡Ideal para principiantes y desarrolladores que buscan optimizar sus apps!
Índice
- ¿Por Qué Usar un Spinner con SQLite?
- Requisitos Previos
- Paso a Paso: Llenar el Spinner con Datos SQLite
- Paso 1: Definir la Clase Modelo
- Paso 2: Configurar la Base de Datos con DBManager
- Paso 3: Poblar el Spinner en la Activity
- Código Completo: Clase Modelo y Activity
- Mejoras y Buenas Prácticas
- Conclusión: Crea Spinners Dinámicos Fácilmente
¿Por Qué Usar un Spinner con SQLite?
Un Spinner en Android es como un menú desplegable que permite al usuario seleccionar una opción de una lista. Combinarlo con SQLite te da:
- Dinamismo: Carga datos en tiempo real desde una base local.
- Flexibilidad: Perfecto para listas como ciudades, categorías o usuarios.
- Eficiencia: Almacena y consulta datos sin depender de una API externa.
Este enfoque es ideal para apps offline o con requisitos de rendimiento, como formularios o configuraciones.
Requisitos Previos
Antes de empezar, asegúrate de tener:
- Android Studio: Instalado y actualizado.
- Conocimientos básicos: Java o Kotlin, XML y conceptos de bases de datos.
- SQLite: Una base de datos configurada (usaremos una clase DBManager ficticia como ejemplo).
- Dependencias: Ninguna adicional, ya que SQLite viene integrado en Android.
Paso a Paso: Llenar el Spinner con Datos SQLite
Paso 1: Definir la Clase Modelo
Creamos una clase Ciudades con atributos, constructores, getters, setters y un método toString() para mostrar solo el nombre en el Spinner:
java
/**
* Clase modelo para representar ciudades en la base de datos
* Autor: ApptivaWeb - 24/04/2018
*/
public class Ciudades {
private int id;
private String nombre;
public Ciudades(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; // Solo muestra el nombre en el Spinner
}
}
- toString(): Fundamental para que el Spinner muestre el nombre sin necesidad de adaptadores personalizados.
Paso 2: Configurar la Base de Datos con DBManager
Suponemos una clase DBManager que gestiona la conexión y consultas SQLite. Debe incluir un método como ListCiudades() para devolver una lista de objetos Ciudades:
java
List<Ciudades> listaCiudades = dBmanager.ListCiudades("WHERE 1");
- Nota: Este tutorial asume que DBManager ya está implementado. Más adelante, puedes consultar un tutorial sobre cómo crearlo.
Paso 3: Poblar el Spinner en la Activity
En la actividad, vinculamos el Spinner, obtenemos los datos y configuramos un adaptador:
java
public class AdminUsuarioNuevoActivity extends AppCompatActivity {
private DBManager dBmanager;
private Spinner spCiudad;
private int idCiudad;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_admin_usuario_nuevo);
// Vincular el Spinner
spCiudad = findViewById(R.id.spCiudad);
// Inicializar DBManager
dBmanager = new DBManager(getApplicationContext());
// Poblar el Spinner
List<Ciudades> listaCiudades = dBmanager.ListCiudades("WHERE 1");
ArrayAdapter<Ciudades> adapter = new ArrayAdapter<>(
this,
android.R.layout.simple_spinner_item,
listaCiudades
);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spCiudad.setAdapter(adapter);
// Listener para obtener el ID seleccionado
spCiudad.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
idCiudad = ((Ciudades) parent.getSelectedItem()).getId();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
idCiudad = 0; // Valor por defecto
}
});
}
}
- ArrayAdapter: Conecta la lista de ciudades al Spinner.
- setOnItemSelectedListener: Captura el ID de la ciudad seleccionada.
Código Completo: Clase Modelo y Activity
Ciudades.java
java
/** * Clase modelo para representar ciudades en la base de datos * Autor: ApptivaWeb - 24/04/2018 */ public class Ciudades { private int id; private String nombre;
public Ciudades(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; } }
AdminUsuarioNuevoActivity.java
java
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import androidx.appcompat.app.AppCompatActivity;
import java.util.List;
public class AdminUsuarioNuevoActivity extends AppCompatActivity {
private DBManager dBmanager;
private Spinner spCiudad;
private int idCiudad;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_admin_usuario_nuevo);
spCiudad = findViewById(R.id.spCiudad);
dBmanager = new DBManager(getApplicationContext());
List<Ciudades> listaCiudades = dBmanager.ListCiudades("WHERE 1");
ArrayAdapter<Ciudades> adapter = new ArrayAdapter<>(
this,
android.R.layout.simple_spinner_item,
listaCiudades
);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spCiudad.setAdapter(adapter);
spCiudad.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
idCiudad = ((Ciudades) parent.getSelectedItem()).getId();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
idCiudad = 0;
}
});
}
}
XML (activity_admin_usuario_nuevo.xml)
xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<Spinner
android:id="@+id/spCiudad"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
Mejoras y Buenas Prácticas
- Validación: Verifica que listaCiudades no esté vacía antes de asignarla al adaptador.
java
if (listaCiudades.isEmpty()) { Toast.makeText(this, "No hay ciudades disponibles", Toast.LENGTH_SHORT).show(); }
- Diseño: Personaliza el Spinner con un layout XML propio si necesitas más control visual.
- Rendimiento: Usa Room o una base de datos más moderna en lugar de SQLite puro para proyectos grandes.
- Modularidad: Separa la lógica del adaptador en una clase aparte si planeas reutilizarla.
- Errores: Maneja excepciones en DBManager para evitar que la app se cierre inesperadamente.
Conclusión: Crea Spinners Dinámicos Fácilmente
Llenar un Spinner con datos de SQLite en Android Studio es un proceso sencillo cuando tienes una clase modelo bien definida y una conexión a la base de datos lista. Con este tutorial, puedes mostrar listas dinámicas y capturar selecciones del usuario en minutos. ¡Personaliza el código, intégralo en tus apps y mejora la experiencia de usuario! ¿Listo para más? Explora cómo crear tu propia clase DBManager en nuestro próximo artículo.
Leido 8377 veces | 1 usuarios
Código fuente no disponible.
Test de Cómo Llenar un Spinner con Datos de SQLite en Android Studio
...