CERCA
PER MODELLO
FullScreen Chatbox! :)

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

Visualizzazione dei risultati da 1 a 1 su 1
Discussione:

Problema con l'update degli elementi di una listview a seguito della modif datab

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

    Problema con l'update degli elementi di una listview a seguito della modif datab

    Buonasera ragazzi!
    Sto cercando una volta modificato il contenuto del db di aggiornare anche il contenuto della listview a seguito del decremento della quantità di un prodotto..
    mi sono creato il metodo:
     
    1
    2
    private void updateListView(){
    3
               cursore.requery();
    4
               adaptatore.notifyDataSetChanged();
    5
               
    6
       }
    7


    dove adaptatore e cursore solo relativamente il cursor della query e l'adapter utilizzati per la creazione e la popolazione della listview...

    solo che quando lo chiamo la listview mi si cancella totalmente e non visualizzo più nulla ed ho il seguente errore nel LOGCAT:
    11-06 14:46:32.300: ERROR/Cursor(7938): Invalid statement in fillWindow()

    molto probabilmente chiamo il metodo nella posizione sbagliata....
    questo è il mio codice parziale...
    198
     
    1
    2
    public class Demo extends Activity {
    3
           
    4
            private Activity activity;
    5
            private Cursor cursore;
    6
            private MyAdapter adaptatore;
    7
           
    8
            //public MyDatabase2 db2 = new MyDatabase2(getApplicationContext());;
    9
           
    10
       @Override
    11
        public void onCreate(Bundle savedInstanceState) {
    12
               this.activity=this;
    13
            super.onCreate(savedInstanceState);
    14
            setContentView(R.layout.main);
    15
    16
            ListView productsLv=(ListView)findViewById(R.id.productsLv);
    17
         
    18
           
    19
            final MyDatabase2 db2=new MyDatabase2(getApplicationContext());
    20
            db2.open();  //apriamo il db
    21
           
    22
            //db2.deleteProdotti();
    23
           
    24
            Cursor e = db2.fetchProducts();
    25
            startManagingCursor(e);
    26
    27
            
    28
       
    29
           
    30
            //Verifica se la tabella articoli da aggiornare (presenza di un nuovo articolo
    31
            //o di un articolo aggiornato)
    32
           
    33
           else if(e.getCount()!=0 && e.moveToFirst()) {
    34
               
    35
                    for(int h=1; h<AR2.size();h++)
    36
                    {
    37
                            int mIdIndex = e.getColumnIndex( MyDatabase2.ProductsMetaDataArt.PRODUCT_ID_KEY);
    38
                    int mNameIndex = e.getColumnIndex( MyDatabase2.ProductsMetaDataArt.PRODUCT_NOME_KEY);
    39
                    int mDateIndex = e.getColumnIndex( MyDatabase2.ProductsMetaDataArt.PRODUCT_DATAA_KEY);
    40
                    int mUriIndex = e.getColumnIndex( MyDatabase2.ProductsMetaDataArt.PRODUCT_URIIMG_KEY);
    41
                   
    42
                                    
    43
                                    
    44
    45
            db2.deleteLogspesadb();
    46
            Cursor f = db2.fetchLog();
    47
            startManagingCursor(f);
    48
            if(f.getCount()==0){//inserimento dati tabella prodotti
    49
                    for(int o=1; o<LS.size();o++)
    50
                    {
    51
                              db2.insertLogSpesa(LS.get(o).getIDArticolo(),LS.get(o).getQta());
    52
                    }
    53
            }        
    54
    55
           
    56
            //Salviamo i dati UTILI (IDARTICOLO e QUANTITA dalla tabella LOGSPESADB)
    57
            //aggiornati dal database per poi poterli passare ad un file xml
    58
            //da inviare al server che poi li deserializzerà aggiornando il DATABASE ANFASS
    59
    60
            Vector<LogSpesaBean> result2 = db2.selectLogspesadb();
    61
            for(int u=0;u<result2.size();u++)
    62
            Log.i("CONTENUTO TABELLA LOGSPESA","ID_ART: "+String.valueOf(result2.get(u).getIDArticolo())+"QTA_AR: "+String.valueOf(result2.get(u).getQta()));
    63
    64
            ArrayList<MyArt> result = db2.selectArticoli();
    65
            for(int j=0;j<result.size();j++)
    66
            Log.i("CONTENUTO TABELLA ARTICOLI",result.get(j).getId()+result.get(j).getArti()+result.get(j).getUri());      
    67
    68
            // !!query che ci restituisce tutti i prodotti in lista spesa e li passa ad un Cursor!!
    69
            cursore=db2.fetchProducts2();
    70
            startManagingCursor(cursore);
    71
            adaptatore = new MyAdapter(this, cursore);
    72
            productsLv.setAdapter(adaptatore); //la listview ha questo adapter
    73
           
    74
            db2.close();
    75
    76
           
    77
            AdapterView.OnItemClickListener mItemListener = new OnItemClickListener() {
    78
    79
                       public void onItemClick(AdapterView<?> adapter, View v,int pos,long id) {
    80
                               
    81
                               final int posizione = pos;
    82
                           db2.open();
    83
                               Cursor r = db2.fetchProducts2();
    84
                               startManagingCursor(r);
    85
                               r.moveToPosition(pos);
    86
                               
    87
                               int mNameIndex = r.getColumnIndex( MyDatabase2.ProductsMetaDataArt.PRODUCT_NOME_KEY);
    88
                               int mUriIndex = r.getColumnIndex( MyDatabase2.ProductsMetaDataArt.PRODUCT_URIIMG_KEY);
    89
                                         
    90
                   
    91
                           ImageView image = new ImageView(activity);  
    92
                           AlertDialog.Builder builder = new AlertDialog.Builder(activity);
    93
                         
    94
                           String s = r.getString(mUriIndex).substring(8);
    95
                           s=s.replaceAll("%20", " ");
    96
                           String myJpgPath = s;
    97
                           BitmapFactory.Options options = new BitmapFactory.Options();
    98
                         
    99
                           options.inSampleSize = 2;           
    100
                           Bitmap bm = BitmapFactory.decodeFile(myJpgPath, options);
    101
                           image.setImageBitmap(bm); //Sostituisci la tua bitmap
    102
                           builder.setTitle("Conferma Acquisto");
    103
                           builder.setIcon(R.drawable.carrello);
    104
                           builder.setView(image);
    105
                           builder.setNegativeButton("Annulla", new DialogInterface.OnClickListener() {
    106
                               
    107
                                     public void onClick(DialogInterface dialog, int id) {
    108
                             dialog.cancel();  
    109
                         
    110
                         }
    111
                               });
    112
                               
    113
                           builder.setMessage("Vuoi acquistare una confezione di "+r.getString(mNameIndex)+" ?").setCancelable(false);
    114
                           
    115
                           
    116
                           builder.setPositiveButton("Conferma", new DialogInterface.OnClickListener() {
    117
                                                 
    118
                               public void onClick(DialogInterface dialog, int id) {
    119
                               
    120
                                       db2.open();
    121
                                       Cursor r = db2.fetchProducts2();
    122
                                       startManagingCursor(r);
    123
                                       r.moveToPosition(posizione);
    124
                                       int mIdIndex = r.getColumnIndex( MyDatabase2.ProductsMetaDataLog.PRODUCT_ID_KEY);               
    125
                                       int mQtaIndex = r.getColumnIndex( MyDatabase2.ProductsMetaDataLog.PRODUCT_QUANT_KEY);
    126
                                       
    127
                                        db2.updateQuantita(Integer.parseInt(r.getString(mIdIndex)), Integer.parseInt(r.getString(mQtaIndex))-1);
    128
                                        db2.close();
    129
                                    dialog.cancel();
    130
                                   
    131
                                  }
    132
                                           
    133
                                           
    134
                              });
    135
                       builder.create().show();
    136
                       !!!!!!!!!!!!!!!!!!!!!!!!!!updateListView();!!!!!!!!!!!!!!!!!!!!!!!!
    137
                       db2.close();
    138
                       
    139
                       }
    140
                    };    
    141
                    ((ListView)findViewById(R.id.productsLv)).setOnItemClickListener(mItemListener);
    142
                   
    143
    144
          
    145
         
    146
           
    147
        } //chiusura void onCreate(Bundle savedInstanceState)
    148
       
    149
       
    150
       class MyAdapter extends ResourceCursorAdapter {
    151
    152
                    private int     mNameIndex;
    153
                    private int mUriIndex;
    154
                    private int mQtaIndex;
    155
                           
    156
                   
    157
    158
                    public MyAdapter(Context context, Cursor cur) {
    159
               super(context, R.layout.product, cur);
    160
               
    161
               mNameIndex = cur.getColumnIndex( MyDatabase2.ProductsMetaDataArt.PRODUCT_NOME_KEY);
    162
               mUriIndex = cur.getColumnIndex( MyDatabase2.ProductsMetaDataArt.PRODUCT_URIIMG_KEY);
    163
               mQtaIndex = cur.getColumnIndex( MyDatabase2.ProductsMetaDataLog.PRODUCT_QUANT_KEY);
    164
           }
    165
    166
    167
    168
           @Override
    169
                    public View newView ( Context context, Cursor cursor, ViewGroup parent ) {
    170
               LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    171
               return li.inflate(R.layout.product, parent, false);
    172
                    }
    173
    174
    175
    176
                    @Override
    177
           public void bindView(View view, Context context, Cursor cur) {
    178
                            TextView nameAr = ( TextView ) view.findViewById( R.id.Nomear );
    179
                            TextView qtaAr = ( TextView ) view.findViewById( R.id.Qtaar );
    180
                            ImageView imageAr = (ImageView) view.findViewById(R.id.ImageArticolo);
    181
                            nameAr.setText( cur.getString( mNameIndex ) );
    182
                            qtaAr.setText( cur.getString( mQtaIndex ) );
    183
                            imageAr.setImageURI(Uri.parse(cur.getString( mUriIndex )));
    184
    185
           }
    186
                   
    187
       
    188
       } //Fine class MyAdapter extends ResourceCursorAdapter
    189
       
    190
       private void updateListView(){
    191
               cursore.requery();
    192
               adaptatore.notifyDataSetChanged();
    193
               
    194
       }
    195
       
    196
       
    197
    } //fine public class Demo extends Activity
    198


    Il metodo updateListView lo chiamo nel punto tra !!!!!punti esclamativi !!!!!!!!!!!!! ma avviene il problema sopra descritto....grazie per l'aiuto...ciao...

  2.  

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