我必须得到列值的总和,但是我得到了表的行数。
以下是我用来检索总和值的代码:
Cursor c=sqLite.getPrezzoTotaleCarrello();
while(c.moveToNext())
{
prezzoTotaleCarrello.setText(c.getString(c.getColumnIndex("Somma_totale")));
Log.d(prezzoTotaleCarrello.getText().toString(),"Visualizziamo");
}
以下是getPrezzoTotaleCarrello()方法的代码:
public Cursor getPrezzoTotaleCarrello()
{
String query = "select SUM(Prezzo_totale) AS Somma_totale from Carrello";
return getReadableDatabase().rawQuery(query, null);
}
方法getPrezzoTotaleCarrello位于扩展SQLiteOpenHelper的类中。
Prezzo_totale是一个包含双精度值的列。 令人难以置信的是,我尝试使用包含整数值的列的相同代码并且它可以工作。 我不明白为什么会这样。
我不得不使用cursor.getDouble()而不是cursor.getString()。 现在,在切割点之后的部分存在另一个问题。例如,如果值为2.55,我在TextView 2.00中看到。
这是新代码:
Cursor c=sqLite.getPrezzoTotaleCarrello();
while(c.moveToNext())
{
prezzoTotaleCarrello.setText(String.valueOf(String.format("%.2f",c.getDouble(c.getColumnIndex("Somma_totale")))));
Log.d(prezzoTotaleCarrello.getText().toString(),"Visualizziamo");
}
新代码:
while(c.moveToNext())
{
// prezzoTotaleCarrello.setText(String.valueOf(String.format("%.2f",c.getDouble(c.getColumnIndex("Somma_totale")))));
Double total = c.getDouble(0);
prezzoTotaleCarrello.setText(String.valueOf(String.format("%.2f",total)));
Log.d(prezzoTotaleCarrello.getText().toString(),"Visualizziamo");
}
以下是所有代码:
class custom_list_one extends BaseAdapter
{
private LayoutInflater layoutInflater;
ViewHolder holder;
private ArrayList<Prodotti> cartList=new ArrayList<Prodotti>();
int cartCounter;
Typeface type;
Context context;
NumberFormat format = NumberFormat.getInstance(Locale.ITALY);
public custom_list_one(Context context, ArrayList<Prodotti> cart_list) {
layoutInflater = LayoutInflater.from(context);
this.cartList=cart_list;
this.cartCounter= cartList.size();
this.context = context;
//type= Typeface.createFromAsset(context.getAssets(),"fonts/book.TTF");
}
@Override
public int getCount() {
return cartCounter;
}
@Override
public Object getItem(int arg0) {
return cartList.get(arg0);
}
@Override
public long getItemId(int arg0) {
return arg0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
Prodotti tempProdotti = cart_list.get(position);
if (convertView == null)
{
convertView = layoutInflater.inflate(R.layout.listone_custom, null);
holder = new ViewHolder();
holder.nome = (TextView) convertView.findViewById(R.id.product_name);
holder.quantita_scelta= (TextView) convertView.findViewById(R.id.quantita_scelta_carrello);
holder.cancel = (ImageButton) convertView.findViewById(R.id.delete);
holder.prezzo = (TextView) convertView.findViewById(R.id.prezzo);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
holder.nome.setText(tempProdotti.getNome());
holder.nome.setTypeface(type);
holder.quantita_scelta.setText(tempProdotti.getQuantita());
holder.quantita_scelta.setTypeface(type);
holder.prezzo.setText(tempProdotti.getPrezzo());
holder.prezzo.setTypeface(type);
//otteniamo la somma di tutti i prezzi dei prodotti del carrello
Double somma=sqLite.getPrezzoTotaleCarrello();
Log.d(String.valueOf(somma),"Visualizziamoooooooo");
String sommaStringa= String.valueOf(somma);
prezzoTotaleCarrello.setText(String.valueOf(sommaStringa));
/*
Cursor c=sqLite.getPrezzoTotaleCarrello();
while(c.moveToNext())
{
// prezzoTotaleCarrello.setText(String.valueOf(String.format("%.2f",c.getDouble(c.getColumnIndex("Somma_totale")))));
Double total = c.getDouble(0);
prezzoTotaleCarrello.setText(String.valueOf(String.format("%.2f",total)));
Log.d(prezzoTotaleCarrello.getText().toString(),"Visualizziamo");
}*/
// Number number2=format.parse(tempProdotti.getPrezzo());
//Double prezzoTotaleProdotto=number2.doubleValue();
//aggiorniamo la casella di testo relativa alla somma totale dei prezzi dei prodotti del carrello
// prezzoTotaleCarrello.setText( String.valueOf(String.format("%.2f", (prezzoTotale+prezzoTotaleProdotto))));
/*
} catch (ParseException e) {
e.printStackTrace();
}*/
holder.cancel.setOnClickListener(new MyPersonalClickListener("button_delete", tempProdotti));
return convertView;
}
class ViewHolder
{
TextView nome;
TextView prezzo;
TextView quantita_scelta;
ImageButton cancel;
}
}
答案 0 :(得分:1)
像这样改变:
String query = "select SUM(Prezzo_totale) Somma_totale from Carrello";
你的问题在这里:
Double prezo = cursor.getDouble(0);
已编辑:这是一个示例代码:
String query = "select SUM(Prezzo_totale) AS Somma_totale from Carrello");
Cursor cursor = database.rawQuery(query, null);
if (cursor.getCount()>0) {
cursor.moveToFirst();
Double total = cursor.getDouble(cursor.getColumnIndex("Somma_totale"));
}
编辑2:
//otteniamo la somma di tutti i prezzi dei prodotti del carrello
//Double somma=sqLite.getPrezzoTotaleCarrello();
Double somma= (Double)0;
Cursor cursor = sqLite.getPrezzoTotaleCarrello();
if (cursor.getCount()>0) {
cursor.moveToFirst();
somma = cursor.getDouble(cursor.getColumnIndex("Somma_totale"));
}
Log.d(String.valueOf(somma),"Visualizziamoooooooo");
String sommaStringa= String.valueOf(somma);
prezzoTotaleCarrello.setText(String.valueOf(sommaStringa));