CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: gioviale1956 con ben 1 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: bluemask con ben 8 Thanks ricevuti negli ultimi sette giorni
Utente del mese: carotix con ben 24 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 6 su 6
Discussione:

AlertDialog popolato con valori presi da database al click su listview

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano


    Registrato dal
    Sep 2010
    Messaggi
    53

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    AlertDialog popolato con valori presi da database al click su listview

    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
    2
    AdapterView.OnItemClickListener mItemListener = new OnItemClickListener() {
    3
                   
    4
                       public void onItemClick(AdapterView parent,View v,int pos,long id) {
    5
                                             
    6
                           AlertDialog.Builder builder = new AlertDialog.Builder(activity);
    7
                           ImageView image = new ImageView(activity);  
    8
                       
    9
                         
    10
                           String myJpgPath = "/mnt/sdcard/frova.jpg";
    11
                           BitmapFactory.Options options = new BitmapFactory.Options();
    12
                           options.inSampleSize = 1;           
    13
                           Bitmap bm = BitmapFactory.decodeFile(myJpgPath, options);
    14
                           image.setImageBitmap(bm);
    15
                           builder.setTitle("Conferma Acquisto");
    16
                           builder.setView(image);
    17
                             builder.setMessage("Vuoi acquistare una confezione di").setCancelable(false).setPositiveButton("OK", new DialogInterface.OnClickListener() {
    18
                                                 
    19
                               public void onClick(DialogInterface dialog, int id) {
    20
                                      dialog.cancel();  
    21
                                  }
    22
                              });
    23
                       builder.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.
    7
     
    1
    2
    // query che ci restituisce tutti i prodotti in lista e li passa ad un Cursor
    3
            Cursor c=db2.fetchProducts2();
    4
            startManagingCursor(c);
    5
            MyAdapter adapter = new MyAdapter(this, c);
    6
            productsLv.setAdapter(adapter); //la listview ha questo adapter
    7


    e questa è la classe MyApapter
    35
     
    1
    2
    class MyAdapter extends ResourceCursorAdapter {
    3
    4
                    private int     mNameIndex;
    5
                    private int mUriIndex;
    6
                    private int mQtaIndex;
    7
                           
    8
                    public MyAdapter(Context context, Cursor cur) {
    9
               super(context, R.layout.product, cur);
    10
               
    11
               mNameIndex = cur.getColumnIndex( MyDatabase2.ProductsMetaDataArt.PRODUCT_NOME_KEY);
    12
               mUriIndex = cur.getColumnIndex( MyDatabase2.ProductsMetaDataArt.PRODUCT_URIIMG_KEY);
    13
               mQtaIndex = cur.getColumnIndex( MyDatabase2.ProductsMetaDataLog.PRODUCT_QUANT_KEY);
    14
           }
    15
    16
           @Override
    17
                    public View newView ( Context context, Cursor cursor, ViewGroup parent ) {
    18
               LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    19
               return li.inflate(R.layout.product, parent, false);
    20
                    }
    21
    22
                    @Override
    23
           public void bindView(View view, Context context, Cursor cur) {
    24
                   
    25
                            TextView nameAr = ( TextView ) view.findViewById( R.id.Nomear );
    26
                            TextView qtaAr = ( TextView ) view.findViewById( R.id.Qtaar );
    27
                            ImageView imageAr = (ImageView) view.findViewById(R.id.ImageArticolo);
    28
                   
    29
                            nameAr.setText( cur.getString( mNameIndex ) );
    30
                            qtaAr.setText( cur.getString( mQtaIndex ) );
    31
                            imageAr.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.

  2.  
  3. #2
    Androidiano


    Registrato dal
    Sep 2010
    Messaggi
    53

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Nessuno riesce a darmi una mano? sto sclerando su questa cosa...vi ringrazio ciao

  4. #3
    Administrator L'avatar di Andrea


    Registrato dal
    Nov 2008
    Messaggi
    3,368
    Smartphone
    Nexus S, myTouch Slide 4g

    Ringraziamenti
    143
    Ringraziato 880 volte in 323 Posts
    Predefinito

    Fammi capire, in pratica vuoi che quando clicchi su un item della lista il dialog che appare prenda le info basandosi su quale item si è cliccato?

    Twitter @veke87

  5. #4
    Androidiano


    Registrato dal
    Sep 2010
    Messaggi
    53

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    ciao scusa il ritardo...sono riuscito a risolvere nel seguente modo...cmq il mio intento è proprio quello che mi hai chiesto tu nella tua domanda...

    83
     
    1
    2
    3
    AdapterView.OnItemClickListener mItemListener = new OnItemClickListener() {
    4
                
    5
                        
    6
                
    7
                   public void onItemClick(AdapterView<?> adapter, View v,int pos,long id) {
    8
                       
    9
                       //String st = "Clicked POS="+pos+" ID="+id;
    10
                       //Toast.makeText(getApplicationContext(),st,Toast.LENGTH_SHORT).show(); 
    11
                       
    12
                       final int posizione = pos;
    13
                       db2.open();
    14
                       Cursor r = db2.fetchProducts2();
    15
                       startManagingCursor(r);
    16
                       r.moveToPosition(pos);
    17
                       
    18
                       int mNameIndex = r.getColumnIndex( MyDatabase2.ProductsMetaDataArt.PRODUCT_NOME_KEY);
    19
                       int mUriIndex = r.getColumnIndex( MyDatabase2.ProductsMetaDataArt.PRODUCT_URIIMG_KEY);
    20
                                  
    21
                       ImageView image = new ImageView(activity);   
    22
                       AlertDialog.Builder builder = new AlertDialog.Builder(activity);
    23
                     
    24
                       String s = r.getString(mUriIndex).substring(8);
    25
                       s=s.replaceAll("%20", " ");
    26
                       String myJpgPath = s;
    27
                       BitmapFactory.Options options = new BitmapFactory.Options();
    28
                       options.inSampleSize = 2;            
    29
                       Bitmap bm = BitmapFactory.decodeFile(myJpgPath, options);
    30
                       image.setImageBitmap(bm); //Sostituisci la tua bitmap
    31
                       builder.setTitle("Conferma Acquisto");
    32
                       builder.setIcon(R.drawable.carrello);
    33
                       builder.setView(image);
    34
                       
    35
                       builder.setNegativeButton("Annulla", new DialogInterface.OnClickListener() {
    36
                       
    37
                         public void onClick(DialogInterface dialog, int id) {
    38
                             dialog.cancel();  
    39
                         
    40
                         }
    41
                       });
    42
                       
    43
                       builder.setMessage("Vuoi acquistare una confezione di "+r.getString(mNameIndex)+" ?").setCancelable(false);
    44
                       
    45
                       
    46
                       builder.setPositiveButton("Conferma", new DialogInterface.OnClickListener() {
    47
                                                  
    48
                           public void onClick(DialogInterface dialog, int id) {
    49
                               
    50
                               db2.open();
    51
                               Cursor r = db2.fetchProducts2();
    52
                               startManagingCursor(r);
    53
                               r.moveToPosition(posizione);
    54
                               int mIdIndex = r.getColumnIndex( MyDatabase2.ProductsMetaDataLog.PRODUCT_ID_KEY);           
    55
                               int mQtaIndex = r.getColumnIndex( MyDatabase2.ProductsMetaDataLog.PRODUCT_QUANT_KEY); 
    56
                    
    57
                               db2.updateQuantita(Integer.parseInt(r.getString(mIdIndex)), Integer.parseInt(r.getString(mQtaIndex))-1);
    58
                               
    59
                               
    60
                               db2.close();
    61
                               
    62
                               dialog.cancel();
    63
                              
    64
                               //db2.fetchLog();
    65
    66
                                //Log.i("ARTICOLO_ID_QUANT_AGGIORNATA",r.getString(mIdIndex));
    67
                                //Log.i("ARTICOLO_QUANTITA_AGGIORNATA",r.getString(mQtaIndex));
    68
                    
    69
                                  }
    70
                        
    71
                        
    72
                              });
    73
                      
    74
                       
    75
                       builder.create().show();
    76
                       db2.close();
    77
                       
    78
                   }
    79
                   
    80
                };    
    81
                
    82
                ((ListView)findViewById(R.id.productsLv)).setOnItemClickListener(mItemListener);
    83


    ti ringrazio...domani posterò un'altra domanda in un nuovo post su un dubbio che ho nell'aggiornamento del database...in quanto non riesco a fare il notifyDataSetChanged() della quantità presente nella listview presa da database che viene decrementata di uno gestendo l'onclick...ti ringrazio ciao...buona serata!

  6. #5
    Administrator L'avatar di Andrea


    Registrato dal
    Nov 2008
    Messaggi
    3,368
    Smartphone
    Nexus S, myTouch Slide 4g

    Ringraziamenti
    143
    Ringraziato 880 volte in 323 Posts
    Predefinito

    In pratica rileggi dal database i dati. io avrei usato setTag nell'adapter :P

    Twitter @veke87

  7. #6
    Androidiano


    Registrato dal
    Sep 2010
    Messaggi
    53

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    ora ho un problema con l'update dei dati presi da listview dopo il decremento della quantità come ho descritto nel post:
    https://www.androidiani.com/forum/pr...dif-datab.html

    non riesco proprio a capire dove sbaglio....ti ringrazio di tutto...ciao!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy