CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: Varioflex con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 14 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 35 Thanks ricevuti nell'ultimo mese

Pagina 1 di 2 12 ultimoultimo
Ultima pagina
Visualizzazione dei risultati da 1 a 10 su 11
Discussione:

problema query in java android

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
    Baby Droid


    Registrato dal
    Jan 2013
    Messaggi
    9

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    problema query in java android

    Ciao a tutti, sto creando la mia prima app in eclipse per android con database sqlite.
    ho una query che deve sommare il contenuto della colonna "euro" e visualizzare il totale in una textview. L'app funziona correttamente ma nella textview non vengono sommati i valori......posto il codice:

    final String sql = "SELECT SUM(euro) FROM rubrica";
    Cursor c = db.rawQuery(sql, null);

    if(c.moveToFirst()) {

    final TextView tView = (TextView) this.findViewById(R.id.mainTextViewTotEuro);
    tView.setText(c.getString(0));
    }
    }

  2.  
  3. #2
    Baby Droid


    Registrato dal
    Jun 2013
    Messaggi
    18

    Ringraziamenti
    0
    Ringraziato 1 volta in 1 Post
    Predefinito

    Quote Originariamente inviato da kontos02 Visualizza il messaggio
    Ciao a tutti, sto creando la mia prima app in eclipse per android con database sqlite.
    ho una query che deve sommare il contenuto della colonna "euro" e visualizzare il totale in una textview. L'app funziona correttamente ma nella textview non vengono sommati i valori......posto il codice:

    final String sql = "SELECT SUM(euro) FROM rubrica";
    Cursor c = db.rawQuery(sql, null);

    if(c.moveToFirst()) {

    final TextView tView = (TextView) this.findViewById(R.id.mainTextViewTotEuro);
    tView.setText(c.getString(0));
    }
    }

    Ciao, scusami ma sei riuscito a venire a capo, io ci sto provando ma non trovo come far funzionare la somma.

  4. #3
    Senior Droid


    Registrato dal
    Jun 2013
    Messaggi
    427

    Ringraziamenti
    14
    Ringraziato 87 volte in 81 Posts
    Predefinito

    Quote Originariamente inviato da gtandem Visualizza il messaggio
    Ciao, scusami ma sei riuscito a venire a capo, io ci sto provando ma non trovo come far funzionare la somma.
    Cursor cursor = db.rawQuery(
    "SELECT SUM(euro) AS somma FROM miaTabella"),
    new String[0]);
    int colIndex = cursor.getColumnIndex("somma");
    if (colIndex == -1)
    return null;
    else
    int somma = cursor.getInt(colIndex);
    System.out.println("La somma è "+somma);

  5. #4
    Baby Droid


    Registrato dal
    Jun 2013
    Messaggi
    18

    Ringraziamenti
    0
    Ringraziato 1 volta in 1 Post
    Predefinito

    Quote Originariamente inviato da greywolf82 Visualizza il messaggio
    Cursor cursor = db.rawQuery(
    "SELECT SUM(euro) AS somma FROM miaTabella"),
    new String[0]);
    int colIndex = cursor.getColumnIndex("somma");
    if (colIndex == -1)
    return null;
    else
    int somma = cursor.getInt(colIndex);
    System.out.println("La somma è "+somma);
    Grazie per la risposta, sono due mesi che ci sbatto la testa ma senza risultati, la mia situazione attuale, con il tuo suggerimento e questa:


    codice:
    private Object displayTurni() {
    		dataBase = mHelper.getWritableDatabase();
    		Cursor mCursor = dataBase.rawQuery("SELECT * FROM " + DbHelper.TURNI_TABLE+" WHERE MESE = 'Gennaio'", null);
    
    		turno_id.clear();
    		turno_mEse.clear();
    		turno_gIorno.clear();
    		turno_tUrno.clear();
    		turno_oRe.clear();
    		if (mCursor.moveToFirst()) {
    			do {
    		turno_id.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.TURNO_ID)));
    		turno_mEse.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.MESE)));
    				turno_gIorno.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.GIORNO)));
    				turno_tUrno.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.TURNO)));
    				turno_oRe.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.ORE)));
    				
    				
    
    			} while (mCursor.moveToNext());
    			Cursor cursor = dataBase.rawQuery(
    					"SELECT SUM(ORE) AS somma FROM DbHelper.ORE",
    					new String[0]);
    					int colIndex = cursor.getColumnIndex("somma");
    					if (colIndex == -1)
    					return null;
    					else
    					somma = cursor.getInt(colIndex);
    					System.out.println("La somma è "+somma);
    		}
    		DisplayAdapter disadpt = new DisplayAdapter(Gennaio.this,turno_id, turno_mEse, turno_gIorno, turno_tUrno, turno_oRe, turno_gIorno );
    		userList.setAdapter(disadpt);
    		mCursor.close();
    		return disadpt;
    	}
    
    	
    
    }

    Ma a quanto pare sbaglio qualcosa, visto che non funziona, non ho ancora capito una cosa, ma la classe displayAdapter, va modificata aggiungendo la funzione select sum oppure no?
    qualsiasi cosa ho letto, non menziona nulla sul displayAdapter. Naturalmente alla activity di destinazione ho aggiunti la relativa text.
    Questo che segue sono rispettivamente le due class interessate:

    codice:
    import java.util.ArrayList;
    
    import turni.db.tab.R;
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.AdapterView.OnItemLongClickListener;
    import android.widget.ListView;
    import android.widget.Toast;
    
    public class Gennaio extends Activity {
    
    	private DbHelper mHelper;
    	private SQLiteDatabase dataBase;
    
    	private ArrayList<String> turno_id = new ArrayList<String>();
    	private ArrayList<String> turno_mEse = new ArrayList<String>();
    	private ArrayList<String> turno_gIorno = new ArrayList<String>();
    	private ArrayList<String> turno_tUrno = new ArrayList<String>();
    	private ArrayList<String> turno_oRe = new ArrayList<String>();
    	
    
    	private ListView userList;
    	private AlertDialog.Builder build;
    	private int somma;
    
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.row2);
    
    		userList = (ListView) findViewById(R.id.List);
    
    		mHelper = new DbHelper(this);
    		
    		//Aggiunta nuovi record
    		findViewById(R.id.btnAdd).setOnClickListener(new OnClickListener() {
    
    			public void onClick(View v) {
    
    				Intent i = new Intent(getApplicationContext(),
    						AddActivity.class);
    				i.putExtra("Aggiorna", false);
    				startActivity(i);
    
    			}
    		});
    		
    		//Aggiornamento dati
    		userList.setOnItemClickListener(new OnItemClickListener() {
    
    			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    					long arg3) {
    
    				Intent i = new Intent(getApplicationContext(),
    						AddActivity.class);
    
    				i.putExtra("TurnoID", turno_id.get(arg2));
    				i.putExtra("Mese", turno_mEse.get(arg2));
    				i.putExtra("Giorno", turno_gIorno.get(arg2));
    				i.putExtra("Turno", turno_tUrno.get(arg2));
    				i.putExtra("Ore", turno_oRe.get(arg2));
    				i.putExtra("update", true);
    				startActivity(i);
    
    			}
    		});
    		
    		//Click lungo per cancellare
    		userList.setOnItemLongClickListener(new OnItemLongClickListener() {
    
    			public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
    					final int arg2, long arg3) {
    
    				build = new AlertDialog.Builder(Gennaio.this);
    				build.setTitle("Cancella " +turno_mEse.get(arg2) +turno_gIorno.get(arg2) +turno_tUrno.get(arg2) + " " +turno_oRe.get(arg2));
    				build.setMessage("Vuoi cancellare ?");
    				build.setPositiveButton("Si",
    						new DialogInterface.OnClickListener() {
    
    							@SuppressLint("ShowToast")
    							public void onClick(DialogInterface dialog,
    									int which) {
    
    								Toast.makeText(
    										getApplicationContext(),
    										turno_mEse.get(arg2) +turno_gIorno.get(arg2) +turno_tUrno.get(arg2) + " " +turno_oRe.get(arg2) +" è stato cancellato", 3000).show();
    
    								dataBase.delete(
    										DbHelper.TURNI_TABLE,
    										DbHelper.TURNO_ID + "="
    												+ turno_id.get(arg2), null);
    								displayTurni();
    								dialog.cancel();
    							}
    						});
    
    				build.setNegativeButton("No",
    						new DialogInterface.OnClickListener() {
    
    							public void onClick(DialogInterface dialog,
    									int which) {
    								dialog.cancel();
    							}
    						});
    				AlertDialog alert = build.create();
    				alert.show();
    
    				return true;
    			}
    		});
    	}
    
    	@Override
    	protected void onResume() {
    		displayTurni();
    		super.onResume();
    	}
    
    	/**
    	 * Visualizza dati da SQLite
    	 * @return 
    	 */
    	private Object displayTurni() {
    		dataBase = mHelper.getWritableDatabase();
    		Cursor mCursor = dataBase.rawQuery("SELECT * FROM " + DbHelper.TURNI_TABLE+" WHERE MESE = 'Gennaio'", null);
    
    		turno_id.clear();
    		turno_mEse.clear();
    		turno_gIorno.clear();
    		turno_tUrno.clear();
    		turno_oRe.clear();
    		if (mCursor.moveToFirst()) {
    			do {
    				turno_id.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.TURNO_ID)));
    				turno_mEse.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.MESE)));
    				turno_gIorno.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.GIORNO)));
    				turno_tUrno.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.TURNO)));
    				turno_oRe.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.ORE)));
    				
    				
    
    			} while (mCursor.moveToNext());
    			Cursor cursor = dataBase.rawQuery(
    					"SELECT SUM(ORE) AS somma FROM DbHelper.ORE",
    					new String[0]);
    					int colIndex = cursor.getColumnIndex("somma");
    					if (colIndex == -1)
    					return null;
    					else
    					somma = cursor.getInt(colIndex);
    					System.out.println("La somma è "+somma);
    		}
    		DisplayAdapter disadpt = new DisplayAdapter(Gennaio.this,turno_id, turno_mEse, turno_gIorno, turno_tUrno, turno_oRe, turno_gIorno );
    		userList.setAdapter(disadpt);
    		mCursor.close();
    		return disadpt;
    	}
    
    	
    
    }
    e il displayAdapter relativo:

    codice:
    import java.util.ArrayList;
    
    import turni.db.tab.R;
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.TextView;
    
    public class DisplayAdapter extends BaseAdapter {
    	private Context mContext;
    	private ArrayList<String> id;
    	private ArrayList<String> mese;
    	private ArrayList<String> giorno;
    	private ArrayList<String> turno;
    	private ArrayList<String> ore;
    	private ArrayList<String> somma;
    
    
    	
    
    	public DisplayAdapter(Context c, ArrayList<String> id,ArrayList<String> mese, ArrayList<String> giorno, ArrayList<String> turno, ArrayList<String> ore, ArrayList<String> somma) {
    		this.mContext = c;
    
    		this.id = id;
    		this.mese = mese;
    		this.giorno = giorno;
    		this.turno = turno;
    		this.ore = ore;
    		this.somma = somma;
    
    	}
    
    	public int getCount() {
    		// TODO Auto-generated method stub
    		return id.size();
    	}
    
    	public Object getItem(int position) {
    		// TODO Auto-generated method stub
    		return null;
    	}
    
    	public long getItemId(int position) {
    		// TODO Auto-generated method stub
    		return 0;
    	}
    
    	public View getView(int pos, View child, ViewGroup parent) {
    		Holder mHolder;
    		LayoutInflater layoutInflater;
    		if (child == null) {
    			layoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    			child = layoutInflater.inflate(R.layout.main2, null);
    			mHolder = new Holder();
    			mHolder.txt_id = (TextView) child.findViewById(R.id.txt_id);
    			mHolder.txt_mEse = (TextView) child.findViewById(R.id.txt_mEse);
    			mHolder.txt_gIorno = (TextView) child.findViewById(R.id.txt_gIorno);
    			mHolder.txt_tUrno = (TextView) child.findViewById(R.id.txt_tUrno);
    			mHolder.txt_oRe = (TextView) child.findViewById(R.id.txt_oRe);
    			mHolder.txt_totoRe = (TextView) child.findViewById(R.id.texttotore);
    			child.setTag(mHolder);
    		} else {
    			mHolder = (Holder) child.getTag();
    		}
    		mHolder.txt_id.setText(id.get(pos));
    		mHolder.txt_mEse.setText(mese.get(pos));
    		mHolder.txt_gIorno.setText(giorno.get(pos));
    		mHolder.txt_tUrno.setText(turno.get(pos));
    		mHolder.txt_oRe.setText(ore.get(pos));
    		mHolder.txt_totoRe.setText(somma.get(pos));
    
    		return child;
    	}
    
    	public class Holder {
    		TextView txt_id;
    		TextView txt_mEse;
    		TextView txt_gIorno;
    		TextView txt_tUrno;
    		TextView txt_oRe;
    		TextView txt_totoRe;
    	}
    
    }
    Ho ricontrollato mille volte in base alle mie conoscenze ma non sono riuscito a capire dove sta l'errore.

    da quello che ne capisco io, al momento in cui inserisco i dati, l'app si blocca in quanto non riesce a tornare alla classe principale ma non trovo l'inghippo, se qualcuno a voglia di aiutarmi mi farebbe un grosso favore. In ogni caso, mi scuso per il lungo post.
    Ultima modifica di gtandem; 15-02-14 alle 19:46

  6. #5
    Baby Droid


    Registrato dal
    Jun 2013
    Messaggi
    18

    Ringraziamenti
    0
    Ringraziato 1 volta in 1 Post
    Predefinito

    Questo è il log:

    codice:
    02-15 18:51:10.218: E/AndroidRuntime(16432): FATAL EXCEPTION: main
    02-15 18:51:10.218: E/AndroidRuntime(16432): java.lang.RuntimeException: Unable to resume activity {turni.db.tab/com.turniDB.Main}: java.lang.RuntimeException: Unable to resume activity {turni.db.tab/com.turniDB.Gennaio}: android.database.sqlite.SQLiteException: no such table: DbHelper.ORE: , while compiling: SELECT SUM(ORE) AS somma FROM DbHelper.ORE
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2444)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2472)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1986)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.app.ActivityThread.access$600(ActivityThread.java:123)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.os.Looper.loop(Looper.java:137)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.app.ActivityThread.main(ActivityThread.java:4424)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at java.lang.reflect.Method.invokeNative(Native Method)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at java.lang.reflect.Method.invoke(Method.java:511)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at dalvik.system.NativeStart.main(Native Method)
    02-15 18:51:10.218: E/AndroidRuntime(16432): Caused by: java.lang.RuntimeException: Unable to resume activity {turni.db.tab/com.turniDB.Gennaio}: android.database.sqlite.SQLiteException: no such table: DbHelper.ORE: , while compiling: SELECT SUM(ORE) AS somma FROM DbHelper.ORE
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2444)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:178)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.app.LocalActivityManager.dispatchResume(LocalActivityManager.java:523)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.app.ActivityGroup.onResume(ActivityGroup.java:61)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1154)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.app.Activity.performResume(Activity.java:4539)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2434)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	... 12 more
    02-15 18:51:10.218: E/AndroidRuntime(16432): Caused by: android.database.sqlite.SQLiteException: no such table: DbHelper.ORE: , while compiling: SELECT SUM(ORE) AS somma FROM DbHelper.ORE
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:68)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:143)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:361)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:127)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:94)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:53)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1564)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1538)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at com.turniDB.Gennaio.displayTurni(Gennaio.java:156)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at com.turniDB.Gennaio.onResume(Gennaio.java:128)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1154)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.app.Activity.performResume(Activity.java:4539)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2434)
    02-15 18:51:10.218: E/AndroidRuntime(16432): 	... 18 more

  7. #6
    Senior Droid


    Registrato dal
    Jun 2013
    Messaggi
    427

    Ringraziamenti
    14
    Ringraziato 87 volte in 81 Posts
    Predefinito

    Quote Originariamente inviato da gtandem Visualizza il messaggio
    Questo è il log:
    E' sbagliata la tabella del database. Dopo "FROM" devi mettere la tabella giusta, immagino sia DbHelper.TURNI_TABLE. Inoltre non puoi mettere tutta la query tra apici, devi fare così:

    "SELECT SUM(ORE) AS somma FROM "+DbHelper.TURNI_TABLE;

  8. #7
    Baby Droid


    Registrato dal
    Jun 2013
    Messaggi
    18

    Ringraziamenti
    0
    Ringraziato 1 volta in 1 Post
    Predefinito

    grazie mille per l'aiuto ma la situazione non cambia di molto, se elimino il database e avvio l'app, apparentemente funziona, mi si avvia, clicco ed inserisco i dati, che ho controllato vengono inseriti correttamente nel database appena creato.
    A questo punto, dovrebbe ritornare alla main e farmi vedere gli inserimenti, ma invece blocca tutto.
    Se riavvio l'app con il database già presente l'app non si avvia proprio.
    Certo che per un novellino come me e un rompicapo assoluto,
    ti allego il nuovo log,
    da come lo interpreto non va in funzione l'onresume
    per un errore alla linea 128

    codice:
    protected void onResume() {
    		displayTurni();
    		super.onResume();

    al momento di mostrare i risultati, a causa di un errore alla linea 163
    codice:
    somma = cursor.getInt(colIndex);
    almeno da quel che ci capisco io, correggimi se sbaglio, almeno apprendo correttamente l'interpretazione del log.
    Allego nuovamente la classe incriminata, con le mod da te suggerite ed il log.

    codice:
    import java.util.ArrayList;
    
    import turni.db.tab.R;
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.AdapterView.OnItemLongClickListener;
    import android.widget.ListView;
    import android.widget.Toast;
    
    public class Gennaio extends Activity {
    
    	private DbHelper mHelper;
    	private SQLiteDatabase dataBase;
    
    	private ArrayList<String> turno_id = new ArrayList<String>();
    	private ArrayList<String> turno_mEse = new ArrayList<String>();
    	private ArrayList<String> turno_gIorno = new ArrayList<String>();
    	private ArrayList<String> turno_tUrno = new ArrayList<String>();
    	private ArrayList<String> turno_oRe = new ArrayList<String>();
    	
    
    	private ListView userList;
    	private AlertDialog.Builder build;
    	private int somma;
    
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.row2);
    
    		userList = (ListView) findViewById(R.id.List);
    
    		mHelper = new DbHelper(this);
    		
    		//Aggiunta nuovi record
    		findViewById(R.id.btnAdd).setOnClickListener(new OnClickListener() {
    
    			public void onClick(View v) {
    
    				Intent i = new Intent(getApplicationContext(),
    						AddActivity.class);
    				i.putExtra("Aggiorna", false);
    				startActivity(i);
    
    			}
    		});
    		
    		//Aggiornamento dati
    		userList.setOnItemClickListener(new OnItemClickListener() {
    
    			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    					long arg3) {
    
    				Intent i = new Intent(getApplicationContext(),
    						AddActivity.class);
    
    				i.putExtra("TurnoID", turno_id.get(arg2));
    				i.putExtra("Mese", turno_mEse.get(arg2));
    				i.putExtra("Giorno", turno_gIorno.get(arg2));
    				i.putExtra("Turno", turno_tUrno.get(arg2));
    				i.putExtra("Ore", turno_oRe.get(arg2));
    				i.putExtra("update", true);
    				startActivity(i);
    
    			}
    		});
    		
    		//Click lungo per cancellare
    		userList.setOnItemLongClickListener(new OnItemLongClickListener() {
    
    			public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
    					final int arg2, long arg3) {
    
    				build = new AlertDialog.Builder(Gennaio.this);
    				build.setTitle("Cancella " +turno_mEse.get(arg2) +turno_gIorno.get(arg2) +turno_tUrno.get(arg2) + " " +turno_oRe.get(arg2));
    				build.setMessage("Vuoi cancellare ?");
    				build.setPositiveButton("Si",
    						new DialogInterface.OnClickListener() {
    
    							@SuppressLint("ShowToast")
    							public void onClick(DialogInterface dialog,
    									int which) {
    
    								Toast.makeText(
    										getApplicationContext(),
    										turno_mEse.get(arg2) +turno_gIorno.get(arg2) +turno_tUrno.get(arg2) + " " +turno_oRe.get(arg2) +" è stato cancellato", 3000).show();
    
    								dataBase.delete(
    										DbHelper.TURNI_TABLE,
    										DbHelper.TURNO_ID + "="
    												+ turno_id.get(arg2), null);
    								displayTurni();
    								dialog.cancel();
    							}
    						});
    
    				build.setNegativeButton("No",
    						new DialogInterface.OnClickListener() {
    
    							public void onClick(DialogInterface dialog,
    									int which) {
    								dialog.cancel();
    							}
    						});
    				AlertDialog alert = build.create();
    				alert.show();
    
    				return true;
    			}
    		});
    	}
    
    	@Override
    	protected void onResume() {
    		displayTurni();
    		super.onResume();
    	}
    
    	/**
    	 * Visualizza dati da SQLite
    	 * @return 
    	 */
    	private Object displayTurni() {
    		dataBase = mHelper.getWritableDatabase();
    		Cursor mCursor = dataBase.rawQuery("SELECT * FROM " + DbHelper.TURNI_TABLE+" WHERE MESE = 'Gennaio'", null);
    
    		turno_id.clear();
    		turno_mEse.clear();
    		turno_gIorno.clear();
    		turno_tUrno.clear();
    		turno_oRe.clear();
    		if (mCursor.moveToFirst()) {
    			do {
    				turno_id.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.TURNO_ID)));
    				turno_mEse.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.MESE)));
    				turno_gIorno.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.GIORNO)));
    				turno_tUrno.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.TURNO)));
    				turno_oRe.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.ORE)));
    				
    				
    
    			} while (mCursor.moveToNext());
    			Cursor cursor = dataBase.rawQuery(
    					"SELECT SUM(ORE) AS somma FROM "+DbHelper.TURNI_TABLE,
    					new String[0]);
    					int colIndex = cursor.getColumnIndex("somma");
    					if (colIndex == -1)
    					return null;
    					else
    					somma = cursor.getInt(colIndex);
    					System.out.println("La somma è "+somma);
    		}
    		DisplayAdapter disadpt = new DisplayAdapter(Gennaio.this,turno_id, turno_mEse, turno_gIorno, turno_tUrno, turno_oRe, somma );
    		userList.setAdapter(disadpt);
    		mCursor.close();
    		return disadpt;
    	}
    
    	
    
    }
    codice:
    02-16 13:18:28.656: E/dalvikvm(5938): Unable to open stack trace file '/data/anr/traces.txt': Is a directory
    02-16 13:18:29.076: E/AndroidRuntime(5938): FATAL EXCEPTION: main
    02-16 13:18:29.076: E/AndroidRuntime(5938): java.lang.RuntimeException: Unable to resume activity {turni.db.tab/com.turniDB.Main}: java.lang.RuntimeException: Unable to resume activity {turni.db.tab/com.turniDB.Gennaio}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2444)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2472)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1986)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at android.app.ActivityThread.access$600(ActivityThread.java:123)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at android.os.Looper.loop(Looper.java:137)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at android.app.ActivityThread.main(ActivityThread.java:4424)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at java.lang.reflect.Method.invokeNative(Native Method)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at java.lang.reflect.Method.invoke(Method.java:511)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at dalvik.system.NativeStart.main(Native Method)
    02-16 13:18:29.076: E/AndroidRuntime(5938): Caused by: java.lang.RuntimeException: Unable to resume activity {turni.db.tab/com.turniDB.Gennaio}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2444)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:178)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at android.app.LocalActivityManager.dispatchResume(LocalActivityManager.java:523)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at android.app.ActivityGroup.onResume(ActivityGroup.java:61)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1154)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at android.app.Activity.performResume(Activity.java:4539)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2434)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	... 12 more
    02-16 13:18:29.076: E/AndroidRuntime(5938): Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at android.database.AbstractCursor.checkPosition(AbstractCursor.java:400)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:68)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at com.turniDB.Gennaio.displayTurni(Gennaio.java:163)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at com.turniDB.Gennaio.onResume(Gennaio.java:128)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1154)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at android.app.Activity.performResume(Activity.java:4539)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2434)
    02-16 13:18:29.076: E/AndroidRuntime(5938): 	... 18 more
    grazie ancora dell'aiuto.
    Ultima modifica di gtandem; 16-02-14 alle 14:40

  9. #8
    Senior Droid


    Registrato dal
    Jun 2013
    Messaggi
    427

    Ringraziamenti
    14
    Ringraziato 87 volte in 81 Posts
    Predefinito

    Non ti so aiutare di più. Sembra che venga passato -1 come valore, ma non dovrebbe accadere perché c'è un if prima che controlla se colIndex è -1. Non saprei, aggiungi delle stampre di log e cerca di capire dove sia il problema. Comunque in displayTurni non chiudi correttamente il db e la variabile somma la farei locale invece di metterla come attributo di classe. Se mantieni uno stato in una activity, se questa viene distrutta e ricreata per qualsiasi motivo, quello stato lo perdi se non lo riconfiguri correttamente chiamando onSaveInstance(). Buon lavoro

  10. #9
    Baby Droid


    Registrato dal
    Jun 2013
    Messaggi
    18

    Ringraziamenti
    0
    Ringraziato 1 volta in 1 Post
    Predefinito

    Se ti invio lo zip contenente il progetto, se non ti creo problemi ovviamente, quando hai tempo gli dai una occhiata? mi faresti un grande favore, magari avendo il completo da provare in pochi minuti tu riesci a trovare l'inghippo.
    Altrimenti, siccome senza la funzione sum tutto funziona correttamente, registro e visualizzo senza problemi, conosci un altro metodo per eseguire la somma delle ore presenti in colonna ore?

  11. #10
    Senior Droid


    Registrato dal
    Jun 2013
    Messaggi
    427

    Ringraziamenti
    14
    Ringraziato 87 volte in 81 Posts
    Predefinito

    Ti ho inviato un PM

Pagina 1 di 2 12 ultimoultimo
Ultima pagina

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