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:
- Al presionar "Generar datos" se crean 50 registros de ejemplo
- Al presionar "Mostrar datos" se recuperan los registros y se muestran en el ListView
- Cada elemetno del ListView muestra nombre, edad y teléfono usando un TextView simple