Adattatore del cursore ed esempio sqlite

Ciao sto cercando il codice di esempio in cui viene utilizzato l’adattatore del cursore con sqlite?

Esempio davvero semplice

Ecco un esempio davvero semplice, ma molto efficace. Una volta che hai le basi giù puoi facilmente costruirle.

Esistono due parti principali per l’utilizzo di un adattatore per cursori con SQLite:

  1. Crea un Cursore corretto dal Database.

  2. Creare un adattatore cursore personalizzato che preleva i dati del cursore dal database e lo abbina alla vista con cui si intende rappresentare i dati.

1. Creare un cursore corretto dal database.

Nella tua attività:

SQLiteOpenHelper sqLiteOpenHelper = new SQLiteOpenHelper( context, DATABASE_NAME, null, DATABASE_VERSION); SQLiteDatabase sqLiteDatabase = sqLiteOpenHelper.getReadableDatabase(); String query = "SELECT * FROM clients ORDER BY company_name ASC"; // No trailing ';' Cursor cursor = sqLiteDatabase.rawQuery(query, null); ClientCursorAdapter adapter = new ClientCursorAdapter( this, R.layout.clients_listview_row, cursor, 0 ); this.setListAdapter(adapter); 

2. Creare un adattatore personalizzato per i cursori.

Nota: l’estensione da ResourceCursorAdapter presuppone l’utilizzo di XML per creare le visualizzazioni.

 public class ClientCursorAdapter extends ResourceCursorAdapter { public ClientCursorAdapter(Context context, int layout, Cursor cursor, int flags) { super(context, layout, cursor, flags); } @Override public void bindView(View view, Context context, Cursor cursor) { TextView name = (TextView) view.findViewById(R.id.name); name.setText(cursor.getString(cursor.getColumnIndex("name"))); TextView phone = (TextView) view.findViewById(R.id.phone); phone.setText(cursor.getString(cursor.getColumnIndex("phone"))); } } 

In Android, Come utilizzare un cursore con una query non elaborata in sqlite:

 Cursor c = sampleDB.rawQuery("SELECT FirstName, Age FROM mytable " + "where Age > 10 LIMIT 5", null); if (c != null ) { if (c.moveToFirst()) { do { String firstName = c.getString(c.getColumnIndex("FirstName")); int age = c.getInt(c.getColumnIndex("Age")); results.add("" + firstName + ",Age: " + age); }while (c.moveToNext()); } } c.close(); 

Esempio di CursorAdapter con Sqlite

 ... DatabaseHelper helper = new DatabaseHelper(this); aListView = (ListView) findViewById(R.id.aListView); Cursor c = helper.getAllContacts(); CustomAdapter adapter = new CustomAdapter(this, c); aListView.setAdapter(adapter); ... class CustomAdapter extends CursorAdapter { // CursorAdapter will handle all the moveToFirst(), getCount() logic for you :) public CustomAdapter(Context context, Cursor c) { super(context, c); } public void bindView(View view, Context context, Cursor cursor) { String id = cursor.getString(0); String name = cursor.getString(1); // Get all the values // Use it however you need to TextView textView = (TextView) view; textView.setText(name); } public View newView(Context context, Cursor cursor, ViewGroup parent) { // Inflate your view here. TextView view = new TextView(context); return view; } } private final class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "db_name"; private static final int DATABASE_VERSION = 1; private static final String CREATE_TABLE_TIMELINE = "CREATE TABLE IF NOT EXISTS table_name (_id INTEGER PRIMARY KEY AUTOINCREMENT, name varchar);"; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TABLE_TIMELINE); db.execSQL("INSERT INTO ddd (name) VALUES ('One')"); db.execSQL("INSERT INTO ddd (name) VALUES ('Two')"); db.execSQL("INSERT INTO ddd (name) VALUES ('Three')"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } public Cursor getAllContacts() { String selectQuery = "SELECT * FROM table_name; SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery(selectQuery, null); return cursor; } }