Visualización de Datos SQLite en ListView de Android

Este ejemplo demuestra cómo mostrar registros de SQLite en un ListView en Android. La aplicación permite crear datos de muestra y visualizarlos en una lista desplazable.

Layout principal (activity_main.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">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="crearRegistros"
        android:text="Generar datos" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="consultarRegistros"
        android:text="Mostrar datos" />
    
    <ListView
        android:id="@+id/lista"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

Modelo de datos (Persona.java)

public class Persona {
    private String nombre;
    private int edad;
    private String telefono;
    
    public Persona(String nombre, int edad, String telefono) {
        this.nombre = nombre;
        this.edad = edad;
        this.telefono = telefono;
    }
    
    public String getNombre() { return nombre; }
    public int getEdad() { return edad; }
    public String getTelefono() { return telefono; }
    
    @Override
    public String toString() {
        return nombre + ", " + edad + ", " + telefono;
    }
}

Actividad principal (MainActivity.java)

public class MainActivity extends Activity {
    private DatabaseHelper dbHelper;
    private List<Persona> personas = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        dbHelper = new DatabaseHelper(this, "Datos.db", null, 1);
    }
    
    public void crearRegistros(View v) {
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        for(int i = 1; i <= 50; i++) {
            ContentValues valores = new ContentValues();
            valores.put("Nombre", "Usuario" + i);
            valores.put("Edad", 25);
            valores.put("Telefono", "600000" + i);
            db.insert("Persona", null, valores);
        }
        Toast.makeText(this, "Datos generados", Toast.LENGTH_SHORT).show();
    }
    
    public void consultarRegistros(View v) {
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        Cursor cursor = db.query("Persona", null, null, null, null, null, null);
        personas.clear();
        
        while (cursor.moveToNext()) {
            String nombre = cursor.getString(cursor.getColumnIndex("Nombre"));
            int edad = cursor.getInt(cursor.getColumnIndex("Edad"));
            String telefono = cursor.getString(cursor.getColumnIndex("Telefono"));
            personas.add(new Persona(nombre, edad, telefono));
        }
        cursor.close();
        
        ListView lista = findViewById(R.id.lista);
        lista.setAdapter(new AdaptadorPersonas());
    }
    
    class AdaptadorPersonas extends BaseAdapter {
        @Override
        public int getCount() { return personas.size(); }
        
        @Override
        public View getView(int posicion, View vista, ViewGroup padre) {
            TextView tv = new TextView(MainActivity.this);
            tv.setTextSize(18);
            tv.setText(personas.get(posicion).toString());
            return tv;
        }
        
        @Override
        public Object getItem(int posicion) { return null; }
        
        @Override
        public long getItemId(int posicion) { return 0; }
    }
}

Helper de base de datos (DatabaseHelper.java)

public class DatabaseHelper extends SQLiteOpenHelper {
    private static final String CREAR_TABLA = 
        "CREATE TABLE Persona(_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
        "Nombre TEXT, Edad INTEGER, Telefono TEXT)";

    public DatabaseHelper(Context context, String nombre, CursorFactory factory, int version) {
        super(context, nombre, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREAR_TABLA);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int vAntigua, int vNueva) {}
}

Funcionamiento:

  1. Al presionar "Generar datos" se crean 50 registros de ejemplo
  2. Al presionar "Mostrar datos" se recuperan los registros y se muestran en el ListView
  3. Cada elemetno del ListView muestra nombre, edad y teléfono usando un TextView simple

Etiquetas: Android SQLite ListView BaseAdapter SQLiteOpenHelper

Publicado el 7-5 21:04