Originariamente inviato da
greywolf82
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.