Ciao ragazzi. Ho un problema nella creazione di un dialog nel quale vorrei inserire (al click su elementi della listview popolata con elementi presi da database) il nome e l'immagine dell'elemento della listview cliccato.
Quello che sono riuscito per ora a fare è un semplice alertdialog dove visualizzo un'immagine in modo statico. Quello che vorrei fare io è che al click sull'elemento della listview mi appaia un dialog con l'immagine relativa all'elemento cliccato e il nome relativo all'elemento cliccato.
Queste due info sono inserite nella listview da database.
Questo è il codice del mio alertdialog:
AdapterView.OnItemClickListener mItemListener = new OnItemClickListener() {
public void onItemClick(AdapterView parent,View v,int pos,long id) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
ImageView image = new ImageView(activity);
String myJpgPath = "/mnt/sdcard/frova.jpg";
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 1;
Bitmap bm = BitmapFactory.decodeFile(myJpgPath, options);
image.setImageBitmap(bm);
builder.setTitle("Conferma Acquisto");
builder.setView(image);
builder.setMessage("Vuoi acquistare una confezione di").setCancelable(false).setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
builder.create().show();
}
};
((ListView)findViewById(R.id.productsLv)).setOnItemClickListener(mItemListener);Mentre per recuperare i dati da database uso i cursor e gli adapter per andare poi a crearmi la mia listview.
// query che ci restituisce tutti i prodotti in lista e li passa ad un Cursor
Cursor c=db2.fetchProducts2();
startManagingCursor(c);
MyAdapter adapter = new MyAdapter(this, c);
productsLv.setAdapter(adapter); //la listview ha questo adaptere questa è la classe MyApapter
class MyAdapter extends ResourceCursorAdapter {
private int mNameIndex;
private int mUriIndex;
private int mQtaIndex;
public MyAdapter(Context context, Cursor cur) {
super(context, R.layout.product, cur);
mNameIndex = cur.getColumnIndex( MyDatabase2.ProductsMetaDataArt.PRODUCT_NOME_KEY);
mUriIndex = cur.getColumnIndex( MyDatabase2.ProductsMetaDataArt.PRODUCT_URIIMG_KEY);
mQtaIndex = cur.getColumnIndex( MyDatabase2.ProductsMetaDataLog.PRODUCT_QUANT_KEY);
}
@Override
public View newView ( Context context, Cursor cursor, ViewGroup parent ) {
LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
return li.inflate(R.layout.product, parent, false);
}
@Override
public void bindView(View view, Context context, Cursor cur) {
TextView nameAr = ( TextView ) view.findViewById( R.id.Nomear );
TextView qtaAr = ( TextView ) view.findViewById( R.id.Qtaar );
ImageView imageAr = (ImageView) view.findViewById(R.id.ImageArticolo);
nameAr.setText( cur.getString( mNameIndex ) );
qtaAr.setText( cur.getString( mQtaIndex ) );
imageAr.setImageURI(Uri.parse(cur.getString( mUriIndex )));
}
} Quello che non riesco a capire è come poter richiamare l'uri e il nomearticolo presenti nel database, (oppure credo si possa fare prendendo queste due info direttamente dall'elemento della listview creato) all'interno dell'alertdialog.
Spero di essermi spiegato bene.
Vi ringrazio.
Ciao.