Memorizzare ArrayList nel db

di il
7 risposte

Memorizzare ArrayList nel db

Ciao, stò creando un'Array List dinamicamente. Ora come faccio ad inserire i dati dell'array nel database? Ho visto diversi esempi, qualcuno suggerisce di utilizzare JSON, qual'è la strada migliore? Questo è il modo con cui popolo l'Array List e lo visualizzo nella Listview:

protected void onActivityResult(int requestCode, int resultCode, Intent data){
	              super.onActivityResult(requestCode, resultCode, data);
	              if(resultCode == RESULT_OK){ 
	                if(requestCode == REQ_CODE_ACT2){
	                
	                	sel_c.setText(data.getStringExtra("sociale"));
	            		
	                }//da qui//
	                else if(requestCode == REQ_CODE_ACT3) {
	                   //ritorno da act3, butto i valori nell'array e nella listview   			 
	                	
	           userArray.add(new User(data.getStringExtra("p"),
	        		   			data.getStringExtra("pe"), 
	        		   			data.getStringExtra("qu")));
	                		                	
	           userAdapter = new UserCustomAdapter(Crea_f.this, R.layout.dettaglio_p_scelti_listview,
	                			  userArray);
	                	  userList = (ListView) findViewById(R.id.listView1);
	                	  userList.setItemsCanFocus(false);
	                	  userList.setAdapter(userAdapter);
	                	  /**
	                	   * get on item click listener
	                	   */
	                	  userList.setOnItemClickListener(new OnItemClickListener() {

	                	   @Override
	                	   public void onItemClick(AdapterView<?> parent, View v,
	                	     final int position, long id) {
	                	    Log.i("List View Clicked", "**********");
	                	    Toast.makeText(Crea_fatture.this,"List View Clicked:" + position, Toast.LENGTH_LONG)
	                	      .show();
	                	   }
	                	  });

	                	 }



	              }

7 Risposte

  • Re: Memorizzare ArrayList nel db

    Io farei un ciclo for analizzerei l'elemento dell'array e farei il metodo di inserimento al db

    tipo
    for(int i = 0; i < array.length; i++){
    analizzo elemento array
    dbHelper.insertElemento(elemento array)
    }

    cosi ogni qual volta ci sia piu di un elemento in un array lui li salva tutti....spero possa servire
  • Re: Memorizzare ArrayList nel db

    Si, il ciclo for è l'idea giusta. Grazie
  • Re: Memorizzare ArrayList nel db

    Di nulla
  • Re: Memorizzare ArrayList nel db

    Ora ho un altro problema, come inserisco i dati nel db? ho fatto così ma ho un errore
    
    07-09 00:02:13.326: E/AndroidRuntime(21851): java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1
    07-09 00:02:13.326: E/AndroidRuntime(21851): 	at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
    
    
    
    private void memorizzaArrayInDb(){
                            ContentValues cv = new ContentValues();
                            SQLiteDatabase db = mHelper.getWritableDatabase();
                            
                            for(int i = 0; i < Array.size(); i++){
                                    //insert in database
                            cv.put(MiaTable.CAMPO1, Array.get(0).toString());  
                            cv.put(MiaTable.CAMPO2, Array.get(1).toString());  
                            cv.put(MiaTable.CAMPO3, Array.get(2).toString());  
                                       db.insert(MiaTable.TABLE_NAME, null, cv);
                                    
                                    
                            }
                            db.close();
                    }
    
  • Re: Memorizzare ArrayList nel db

    Bisognerebbe vedere come avviene la generazione della variabile Array. Attualmente Array contiene un solo elemento, per cui quando cerchi di prendere il secondo e il terzo ti da un errore..

    Nota: il tipo di dato ArrayList non è un array, ma una lista (la cui implementazione si basa su un array).
  • Re: Memorizzare ArrayList nel db

    Non ha un solo campo, ma 3, vedi il mio primo post, passo i dati da una activity e li inserisco nell'array
    getStringExtra
  • Re: Memorizzare ArrayList nel db

    Ti riferisci a questa porzione di codice?
    userArray.add(new User(data.getStringExtra("p"),
                                 data.getStringExtra("pe"), 
                                 data.getStringExtra("qu")));
    Se si allora la tua lista ha un solo elemento al suo interno, il quale a sua volta ha (presumibilmente) 3 campi. Del resto il logcat non mente:
    size is 1
    Immagino, inoltre, che la riga 255 sia questa:
    cv.put(MiaTable.CAMPO2, Array.get(1).toString()); 
Devi accedere o registrarti per scrivere nel forum
7 risposte