Autore Topic: SELECT SUM come passare risultato a textview?  (Letto 677 volte)

Offline giannit

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung s4
  • Sistema operativo:
    Android
SELECT SUM come passare risultato a textview?
« il: 13 Febbraio 2014, 16:55:54 CET »
0
Ciao, essedo sempre convinto che i forum servono a darsi aiuto e malgrado altri post senza risposta su questo forum, ci riprovo fiducioso a chiedere, sperando che questa volta qualche anima pia mi risponda.Sono quasi alla fine della mia prima app ma a questo punto non so dove sbattere la testa, dopo giorni che leggo post senza trovare una soluzione.
Il mio obiettivo e quello di ottenere e visualizzare la somma della colona ore inserite nel database e visualizzare il totale al fondo della listview ma nella stessa activity, sto provando e riprovando ma senza soluzione questa classe:
Codice (Java): [Seleziona]
package com.turniDB;


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 ArrayList<String> turno_totoRe = new ArrayList<String>();
       

        private ListView userList;
        private AlertDialog.Builder build;

        @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
         */

        private void displayTurni() {
                dataBase = mHelper.getWritableDatabase();
                Cursor mCursor = dataBase.rawQuery("SELECT TURNO_ID,MESE,GIORNO,TURNO,ORE 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());
                }
               

       {
                dataBase = mHelper.getWritableDatabase();
                Cursor cCursor = dataBase.rawQuery("SELECT SUM (ORE) FROM " + DbHelper.TURNI_TABLE+"", null);

                turno_totoRe.clear();
                if (cCursor.moveToFirst()) {
                        do {

                                turno_totoRe.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.ORE)));
                               
                               

                        } while (mCursor.moveToNext());
                }
                DisplayAdapter disadpt = new DisplayAdapter(Gennaio.this,turno_id, turno_mEse, turno_gIorno, turno_tUrno, turno_oRe, turno_totoRe );
                userList.setAdapter(disadpt);
                mCursor.close();
        }


}}
e sulla row2 ho inserito una textview ,android:id="@+id/textVtotore"
il mio intento e quello di visualizzare il totale della colonna ore del relativo database, ma non riesco proprio a venirne a capo.
Qualcuno di buona volonta, mi da un occhio se la sintassi relativa al select sum e corretta?
oltretutto se lancio l'emulatore l'app non parte proprio.
« Ultima modifica: 28 Febbraio 2014, 11:49:46 CET da giannit »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:SELECT SUM non mi funziona dove sbaglio???
« Risposta #1 il: 13 Febbraio 2014, 18:01:41 CET »
0
Ciao, essedo sempre convinto che i forum servono a darsi aiuto e malgrado altri post senza risposta su questo forum,

Hai detto bene, ma darsi aiuto è una cosa bidirezionale... e pochissimi si mettono a leggere tutte le domande del forum per cercarne una a cui sanno rispondere.  ;-)

Comunque, per la select sum, secondo me potresti sbagliare l'indice, che dovrebbe essere 0 dato che fai la SELECT di un unico valore:

Codice (Java): [Seleziona]
mCursor.getString(0)
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline giannit

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung s4
  • Sistema operativo:
    Android
Re:SELECT SUM non mi funziona dove sbaglio???
« Risposta #2 il: 13 Febbraio 2014, 18:56:19 CET »
0
Intanto grazie per la risposta, riguardo i post, intendevo i miei, lasciati li e dopo diversi giorni nessuna risposta, se fossi esperto, non mi sognerei neppure domande simili, ma essendo mooooolto alle prime armi ma anche molto volentroso di imparare mi devo appoggiare agli esperti almeno per gli scogli peggiori. tornando al post, intendi questo..... abbi pazienza...
Codice (Java): [Seleziona]
turno_totoRe.add(cCursor.getString(mCursor.getColumnIndex(DbHelper.ORE)));da mettere cosi:
Codice (Java): [Seleziona]
turno_totoRe.add(cCursor.getString(0)); caso continua a non partire l'app.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:SELECT SUM non mi funziona dove sbaglio???
« Risposta #3 il: 13 Febbraio 2014, 19:01:01 CET »
0
Se l'app non parte cerca nel LogCat l'errore generato.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline giannit

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung s4
  • Sistema operativo:
    Android
Re:SELECT SUM non mi funziona dove sbaglio???
« Risposta #4 il: 13 Febbraio 2014, 19:44:25 CET »
0
Ci capissi qualcosa in particolare.....
questo è il log
Codice (Java): [Seleziona]
02-13 18:37:23.401: W/ThrottleService(77): unable to find stats for iface rmnet0
02-13 18:37:27.971: D/AndroidRuntime(698): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
02-13 18:37:27.971: D/AndroidRuntime(698): CheckJNI is ON
02-13 18:37:28.941: D/AndroidRuntime(698): Calling main entry com.android.commands.pm.Pm
02-13 18:37:28.991: D/AndroidRuntime(698): Shutting down VM
02-13 18:37:29.011: D/dalvikvm(698): GC_CONCURRENT freed 101K, 78% free 463K/2048K, paused 1ms+2ms
02-13 18:37:29.011: D/dalvikvm(698): Debugger has detached; object registry had 1 entries
02-13 18:37:29.022: I/AndroidRuntime(698): NOTE: attach of thread 'Binder Thread #3' failed
02-13 18:37:29.652: D/AndroidRuntime(711): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
02-13 18:37:29.652: D/AndroidRuntime(711): CheckJNI is ON
02-13 18:37:30.581: D/AndroidRuntime(711): Calling main entry com.android.commands.am.Am
02-13 18:37:30.611: I/ActivityManager(77): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=turni.db.tab/com.turniDB.Main} from pid 711
02-13 18:37:30.621: W/WindowManager(77): Failure taking screenshot for (180x300) to layer 21005
02-13 18:37:30.711: D/AndroidRuntime(711): Shutting down VM
02-13 18:37:30.781: I/AndroidRuntime(711): NOTE: attach of thread 'Binder Thread #3' failed
02-13 18:37:30.781: D/dalvikvm(722): Not late-enabling CheckJNI (already on)
02-13 18:37:30.781: D/dalvikvm(711): GC_CONCURRENT freed 101K, 77% free 485K/2048K, paused 1ms+1ms
02-13 18:37:30.792: D/dalvikvm(711): Debugger has detached; object registry had 1 entries
02-13 18:37:30.821: I/ActivityManager(77): Start proc turni.db.tab for activity turni.db.tab/com.turniDB.Main: pid=722 uid=10055 gids={}
02-13 18:37:31.121: W/NetworkManagementSocketTagger(77): setKernelCountSet(10055, 1) failed with errno -2
02-13 18:37:31.621: I/Process(77): Sending signal. PID: 722 SIG: 3
02-13 18:37:31.621: I/dalvikvm(722): threadid=3: reacting to signal 3
02-13 18:37:31.882: I/dalvikvm(722): Wrote stack traces to '/data/anr/traces.txt'
02-13 18:37:32.121: I/Process(77): Sending signal. PID: 722 SIG: 3
02-13 18:37:32.121: I/dalvikvm(722): threadid=3: reacting to signal 3
02-13 18:37:32.251: I/dalvikvm(722): Wrote stack traces to '/data/anr/traces.txt'
02-13 18:37:32.321: D/AndroidRuntime(722): Shutting down VM
02-13 18:37:32.321: W/dalvikvm(722): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
02-13 18:37:32.342: E/AndroidRuntime(722): FATAL EXCEPTION: main
02-13 18:37:32.342: E/AndroidRuntime(722): 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}: java.lang.NullPointerException
02-13 18:37:32.342: E/AndroidRuntime(722):      at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2444)
02-13 18:37:32.342: E/AndroidRuntime(722):      at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2472)
02-13 18:37:32.342: E/AndroidRuntime(722):      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1986)
02-13 18:37:32.342: E/AndroidRuntime(722):      at android.app.ActivityThread.access$600(ActivityThread.java:123)
02-13 18:37:32.342: E/AndroidRuntime(722):      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
02-13 18:37:32.342: E/AndroidRuntime(722):      at android.os.Handler.dispatchMessage(Handler.java:99)
02-13 18:37:32.342: E/AndroidRuntime(722):      at android.os.Looper.loop(Looper.java:137)
02-13 18:37:32.342: E/AndroidRuntime(722):      at android.app.ActivityThread.main(ActivityThread.java:4424)
02-13 18:37:32.342: E/AndroidRuntime(722):      at java.lang.reflect.Method.invokeNative(Native Method)
02-13 18:37:32.342: E/AndroidRuntime(722):      at java.lang.reflect.Method.invoke(Method.java:511)
02-13 18:37:32.342: E/AndroidRuntime(722):      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-13 18:37:32.342: E/AndroidRuntime(722):      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-13 18:37:32.342: E/AndroidRuntime(722):      at dalvik.system.NativeStart.main(Native Method)
02-13 18:37:32.342: E/AndroidRuntime(722): Caused by: java.lang.RuntimeException: Unable to resume activity {turni.db.tab/com.turniDB.Gennaio}: java.lang.NullPointerException
02-13 18:37:32.342: E/AndroidRuntime(722):      at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2444)
02-13 18:37:32.342: E/AndroidRuntime(722):      at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:178)
02-13 18:37:32.342: E/AndroidRuntime(722):      at android.app.LocalActivityManager.dispatchResume(LocalActivityManager.java:523)
02-13 18:37:32.342: E/AndroidRuntime(722):      at android.app.ActivityGroup.onResume(ActivityGroup.java:61)
02-13 18:37:32.342: E/AndroidRuntime(722):      at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1154)
02-13 18:37:32.342: E/AndroidRuntime(722):      at android.app.Activity.performResume(Activity.java:4539)
02-13 18:37:32.342: E/AndroidRuntime(722):      at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2434)
02-13 18:37:32.342: E/AndroidRuntime(722):      ... 12 more
02-13 18:37:32.342: E/AndroidRuntime(722): Caused by: java.lang.NullPointerException
02-13 18:37:32.342: E/AndroidRuntime(722):      at com.turniDB.DisplayAdapter.getCount(DisplayAdapter.java:46)
02-13 18:37:32.342: E/AndroidRuntime(722):      at android.widget.ListView.setAdapter(ListView.java:460)
02-13 18:37:32.342: E/AndroidRuntime(722):      at com.turniDB.Gennaio.displayTurni(Gennaio.java:173)
02-13 18:37:32.342: E/AndroidRuntime(722):      at com.turniDB.Gennaio.onResume(Gennaio.java:128)
02-13 18:37:32.342: E/AndroidRuntime(722):      at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1154)
02-13 18:37:32.342: E/AndroidRuntime(722):      at android.app.Activity.performResume(Activity.java:4539)
02-13 18:37:32.342: E/AndroidRuntime(722):      at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2434)
02-13 18:37:32.342: E/AndroidRuntime(722):      ... 18 more
02-13 18:37:32.361: W/ActivityManager(77):   Force finishing activity turni.db.tab/com.turniDB.Main
02-13 18:37:32.371: W/WindowManager(77): Failure taking screenshot for (180x300) to layer 21010
02-13 18:37:32.621: I/Process(77): Sending signal. PID: 722 SIG: 3
02-13 18:37:32.621: I/dalvikvm(722): threadid=3: reacting to signal 3
02-13 18:37:32.641: I/dalvikvm(722): Wrote stack traces to '/data/anr/traces.txt'
02-13 18:37:32.946: W/ActivityManager(77): Activity pause timeout for ActivityRecord{415e09c0 turni.db.tab/com.turniDB.Main}
02-13 18:37:32.971: I/Process(77): Sending signal. PID: 722 SIG: 3
02-13 18:37:32.971: I/dalvikvm(722): threadid=3: reacting to signal 3
02-13 18:37:32.991: I/dalvikvm(722): Wrote stack traces to '/data/anr/traces.txt'
02-13 18:37:33.302: W/NetworkManagementSocketTagger(77): setKernelCountSet(10055, 0) failed with errno -2
02-13 18:37:43.326: W/ActivityManager(77): Activity destroy timeout for ActivityRecord{415e09c0 turni.db.tab/com.turniDB.Main}
02-13 18:41:00.491: D/dalvikvm(77): GC_CONCURRENT freed 432K, 13% free 11424K/13063K, paused 20ms+11ms
02-13 18:42:05.331: D/dalvikvm(174): GC_CONCURRENT freed 384K, 6% free 9533K/10119K, paused 18ms+5ms
02-13 18:42:32.450: I/Process(722): Sending signal. PID: 722 SIG: 9
02-13 18:42:32.480: W/InputManagerService(77): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@41485188
02-13 18:42:32.790: I/ActivityManager(77): Process turni.db.tab (pid 722) has died.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:SELECT SUM non mi funziona dove sbaglio???
« Risposta #5 il: 13 Febbraio 2014, 20:22:57 CET »
0
Ci capissi qualcosa in particolare.....

Devi scorrere le varie righe con la E di Errore e cercare quelle dove trovi il nome di un tuo file java:

Citazione
02-13 18:37:32.342: E/AndroidRuntime(722): Caused by: java.lang.NullPointerException
02-13 18:37:32.342: E/AndroidRuntime(722):      at com.turniDB.DisplayAdapter.getCount(DisplayAdapter.java:46)
02-13 18:37:32.342: E/AndroidRuntime(722):      at android.widget.ListView.setAdapter(ListView.java:460)
02-13 18:37:32.342: E/AndroidRuntime(722):      at com.turniDB.Gennaio.displayTurni(Gennaio.java:173)
02-13 18:37:32.342: E/AndroidRuntime(722):      at com.turniDB.Gennaio.onResume(Gennaio.java:128)

Le righe che hai trovato si leggono così: alle righe 128 e 173 di Gennaio.java qualcosa è Null e non dovrebbe esserlo.

Alla riga 128 presumo tu richiami la funzione displayTurni, il che ti porta ad andare a vedere cosa c'è nella riga 173.

Però se, come sembra, è tuo anche il file DisplayAdapter, allora il problema è alla riga 46 di tale file.
« Ultima modifica: 13 Febbraio 2014, 20:24:35 CET da bradipao »
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline giannit

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung s4
  • Sistema operativo:
    Android
Re:SELECT SUM non mi funziona dove sbaglio???
« Risposta #6 il: 13 Febbraio 2014, 21:36:39 CET »
0
Ho guardato ma forse sono stanco ho capisco meno di quel che pens, questo è il display adapter:
Codice (Java): [Seleziona]
package com.turniDB;

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> totore;


       

        public DisplayAdapter(Context c, ArrayList<String> id,ArrayList<String> mese, ArrayList<String> giorno, ArrayList<String> turno, ArrayList<String> ore,ArrayList<String> totore) {
                this.mContext = c;

                this.id = id;
                this.mese = mese;
                this.giorno = giorno;
                this.turno = turno;
                this.ore = ore;
                this.ore = totore;

        }

        public DisplayAdapter(Gennaio c, ArrayList<String> turno_id,
                        ArrayList<String> turno_mEse, ArrayList<String> turno_gIorno,
                        ArrayList<String> turno_tUrno, ArrayList<String> turno_oRe,
                        ArrayList<String> turno_totoRe) {
                // TODO Auto-generated constructor stub
        }

        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(totore.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;
        }

}
alla linea 46 osservo :
Codice (Java): [Seleziona]
  44    public int getCount() {
                     45    // TODO Auto-generated method stub
                     46      return id.size();
se metto    return 0; la aap parte, memorizza in databaseb i miei inserimenti ma ovviamente non me li fa visualizzare.
in questo caso il  log non riporta errori ma la lista e vuota
Da notare che fino a quando non ho aggiunto il select sum e relative strighe in gennaio la app funzionava tranquillamente senza errori evidentemente sbaglio qualcosa ma non capisco dove.
« Ultima modifica: 13 Febbraio 2014, 21:55:09 CET da giannit »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:SELECT SUM non mi funziona dove sbaglio???
« Risposta #7 il: 14 Febbraio 2014, 07:53:44 CET »
0
Se ti da' NullPointerException in quella riga, è perchè id è NULL, per qualche ragione.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline giannit

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung s4
  • Sistema operativo:
    Android
Re:SELECT SUM non mi funziona dove sbaglio???
« Risposta #8 il: 14 Febbraio 2014, 11:47:07 CET »
0
Riguardando il tutto osservo:

Codice (Java): [Seleziona]
private void displayTurni() {
                dataBase = mHelper.getWritableDatabase();
                Cursor mCursor = dataBase.rawQuery("SELECT TURNO_ID,MESE,GIORNO,TURNO,ORE 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());
                }
               

       {
                dataBase = mHelper.getWritableDatabase();
                Cursor cCursor = dataBase.rawQuery("SELECT SUM (ORE) FROM " + DbHelper.TURNI_TABLE+"", null);

                turno_totoRe.clear();
                if (cCursor.moveToFirst()) {
                        do {

                            turno_totoRe.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.ORE)));
                               
                               

                        } while (mCursor.moveToNext());
                }
                DisplayAdapter disadpt = new DisplayAdapter(Gennaio.this,turno_id, turno_mEse, turno_gIorno, turno_tUrno, turno_oRe, turno_totoRe );
                userList.setAdapter(disadpt);
                mCursor.close();
        }

confesso che sono confuso, ma forse l'errore potrebbe essere questo o sbaglio???
il movecursor punta sia sul select     che su select sum a
Codice (Java): [Seleziona]
turno_oRe.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.ORE)));
turno_totoRe.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.ORE)));
« Ultima modifica: 14 Febbraio 2014, 11:55:38 CET da giannit »

Offline giannit

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung s4
  • Sistema operativo:
    Android
Re:SELECT SUM non mi funziona dove sbaglio???
« Risposta #9 il: 28 Febbraio 2014, 11:47:20 CET »
0
Allora, riguardo il select sum, finalmente mi funziona, ora mi trovo in questa condizione:
Codice (Java): [Seleziona]
private void displayData() {
                dataBase = mHelper.getWritableDatabase();
                Cursor mCursor = dataBase.rawQuery("SELECT * FROM "+ DbHelper.TURNI_TABLE, null);

                turni_Id.clear();
                turni_giorno.clear();
                turni_mese.clear();
                turni_turno.clear();
                turni_ore.clear();
                turni_totore.clear();
                if (mCursor.moveToFirst()) {
                        do {
                                turni_Id.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.TURNI_ID)));
                                turni_giorno.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.GIORNO)));
                                turni_mese.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.MESE)));
                                turni_turno.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.TURNO)));
                                turni_ore.add(mCursor.getString(mCursor.getColumnIndex(DbHelper.ORE)));
                               
                Cursor cursor = dataBase.rawQuery("SELECT SUM(ore) AS totore FROM "+DbHelper.TURNI_TABLE+" WHERE MESE = 'Gennaio'", null);

                                       int colIndex = cursor.getColumnIndex("totore");
                                       if (colIndex == -1)
                                       return;
                                       else
                                        cursor.moveToFirst();
                                       totore = cursor.getInt(colIndex);            
                                       System.out.println("La somma è "+totore);
                                       turni_totore.add(totore+"");
                                       Integer.toString(totore);

                        } while (mCursor.moveToNext());
                }
                DisplayAdapter disadpt = new DisplayAdapter(DisplayActivity.this,turni_Id,turni_giorno,turni_mese,turni_turno,turni_ore, turni_totore);
                turniList.setAdapter(disadpt);
                disadpt.notifyDataSetChanged();
            mCursor.close();
            return;
           }
Attualmente la somma "ore" viene passata al displayAdapter e visualizzata, ma ad ogni riga mi riporta il totale. Ora... come posso fare per evitare questo e visualizzare la somma in una textview presente sulla activity "display_activity" anzichè sulla listview?
se ho ben capito, devo togliere dal display adapter il turni_totore, dopodiche dovrei passare il valore del totore alla textview, ma come????

Post unito: 28 Febbraio 2014, 15:25:35 CET
Mi rispondo da solo, grazie comunque.
Per chi avesse lo stesso problema:
Codice (Java): [Seleziona]
Cursor cursor = dataBase.rawQuery("SELECT SUM(ore) AS totore FROM "+DbHelper.TURNI_TABLE+" WHERE MESE = 'Gennaio'", null);

                                       int colIndex = cursor.getColumnIndex("totore");
                                       if (colIndex == -1)
                                       return;
                                       else
                                        cursor.moveToFirst();
                                       totore = cursor.getInt(colIndex);            
                                       System.out.println("La somma è "+totore);
                                       turni_totore.add(totore+"");
                                       Integer.toString(totore);
                                      TextView text = (TextView) findViewById(R.id.txttotore);
                                      text.setText(totore+"");

                        } while (mCursor.moveToNext());
« Ultima modifica: 28 Febbraio 2014, 15:25:35 CET da giannit, Reason: Merged DoublePost »