Adesso l'esercizio consiste nel caricare immagini su una GridView ordinabile per categorie.
Per prima cosa creo un database con una tabella Categorie, la quale ha due campi, Categoria e Path.
Questa tabella è collegata con una AutoComplete.
Ho problemi a ricordare con certezza la sintassi della query con il LIKE.
Apro un sottoprogramma di ripasso...
Questo è il codice della query che ho scritto:
public Cursor query(String str){ SQLiteDatabase db=this.getWritableDatabase(); Cursor crs=db.rawQuery("select * from TblCategorie where categoria like '" +str+"%'", null); return crs; }e che devo verificare per essere sicuro che sia scritto bene.
Dunque mi predispongo una ListView in cui scaricare e visualizzare tutti i record del database.
Ecco: ho inserito due records in cui i valori del campo "categoria" erano "cazzate" e "minchiate", e constato che il funzionamento è quello che mi aspettavo:
codice completo:
public class MainActivity extends Activity {
private ListView listView;
private Helper helper;
private Adapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
helper=new Helper(this);
listView=(ListView)findViewById(R.id.listView1);
helper.save("cazzate","unCertoPath");
helper.save("minchiate","unCertoPath");
adapter=new Adapter(this,helper.query("m"));
listView.setAdapter(adapter);
}
class Adapter extends CursorAdapter{
public Adapter(Context context, Cursor c) {
super(context, c);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater=(LayoutInflater)context.getSystemService(LAYOUT_INFLATER_SERVICE);
View v=inflater.inflate(R.layout.hills, null);
return v;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView testo=(TextView)view.findViewById(R.id.textView1);
testo.setText(cursor.getString(1));
}
}
class Helper extends SQLiteOpenHelper{
public Helper(Context context) {
super(context, "mioDatabase", null, 1);
// TODO Auto-generated constructor stub
}
public void save(String categoria,String path){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("categoria",categoria);
db.insert("TblCategorie", null, values);
}
public Cursor query(String str){
SQLiteDatabase db=this.getWritableDatabase();
Cursor crs=db.rawQuery("select * from TblCategorie where categoria like '" +str+"%'", null);
return crs;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table tblCategorie(_id integer primary key, categoria text,path text)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
Se la parte marcata in rosso ha come parametro una lettera (in questo caso la "m") appaiono solo i records in cui "categoria" inizia per "m", se la "c" solo quelli in cui "categoria" inizia per "c", se si tratta di una stringa vuota appaiono tutti i records, se è uno spazio " " non appare nessun record.Ottimo ripasso!
Nessun commento:
Posta un commento