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:
1
2AdapterView.OnItemClickListener mItemListener = new OnItemClickListener() {
3
4public void onItemClick(AdapterView parent,View v,int pos,long id) {
5
6AlertDialog.Builder builder = new AlertDialog.Builder(activity);
7ImageView image = new ImageView(activity);
8
9
10String myJpgPath = "/mnt/sdcard/frova.jpg";
11BitmapFactory.Options options = new BitmapFactory.Options();
12options.inSampleSize = 1;
13Bitmap bm = BitmapFactory.decodeFile(myJpgPath, options);
14image.setImageBitmap(bm);
15builder.setTitle("Conferma Acquisto");
16builder.setView(image);
17builder.setMessage("Vuoi acquistare una confezione di").setCancelable(false).setPositiveButton("OK", new DialogInterface.OnClickListener() {
18
19public void onClick(DialogInterface dialog, int id) {
20dialog.cancel();
21}
22});
23builder.create().show();
24}
25};
26((ListView)findViewById(R.id.productsLv)).setOnItemClickListener(mItemListener);
27
Mentre per recuperare i dati da database uso i cursor e gli adapter per andare poi a crearmi la mia listview.
71
2// query che ci restituisce tutti i prodotti in lista e li passa ad un Cursor
3Cursor c=db2.fetchProducts2();
4startManagingCursor(c);
5MyAdapter adapter = new MyAdapter(this, c);
6productsLv.setAdapter(adapter); //la listview ha questo adapter
7
e questa è la classe MyApapter
351
2class MyAdapter extends ResourceCursorAdapter {
3
4private int mNameIndex;
5private int mUriIndex;
6private int mQtaIndex;
7
8public MyAdapter(Context context, Cursor cur) {
9super(context, R.layout.product, cur);
10
11mNameIndex = cur.getColumnIndex( MyDatabase2.ProductsMetaDataArt.PRODUCT_NOME_KEY);
12mUriIndex = cur.getColumnIndex( MyDatabase2.ProductsMetaDataArt.PRODUCT_URIIMG_KEY);
13mQtaIndex = cur.getColumnIndex( MyDatabase2.ProductsMetaDataLog.PRODUCT_QUANT_KEY);
14}
15
16
17public View newView ( Context context, Cursor cursor, ViewGroup parent ) {
18LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
19return li.inflate(R.layout.product, parent, false);
20}
21
22
23public void bindView(View view, Context context, Cursor cur) {
24
25TextView nameAr = ( TextView ) view.findViewById( R.id.Nomear );
26TextView qtaAr = ( TextView ) view.findViewById( R.id.Qtaar );
27ImageView imageAr = (ImageView) view.findViewById(R.id.ImageArticolo);
28
29nameAr.setText( cur.getString( mNameIndex ) );
30qtaAr.setText( cur.getString( mQtaIndex ) );
31imageAr.setImageURI(Uri.parse(cur.getString( mUriIndex )));
32
33}
34}
35
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.