android中的sqlite列双值求和
我必须得到一列值的总和,但我得到表的行数 以下是我用于检索总和值的代码:android中的sqlite列双值求和,android,sqlite,Android,Sqlite,我必须得到一列值的总和,但我得到表的行数 以下是我用于检索总和值的代码: Cursor c=sqLite.getPrezzoTotaleCarrello(); while(c.moveToNext()) { prezzoTotaleCarrello.setText(c.getString(c.getColumnIndex("Somma_totale"))); Log.d(prezzoTotaleCarrello.
Cursor c=sqLite.getPrezzoTotaleCarrello();
while(c.moveToNext())
{
prezzoTotaleCarrello.setText(c.getString(c.getColumnIndex("Somma_totale")));
Log.d(prezzoTotaleCarrello.getText().toString(),"Visualizziamo");
}
下面是getPrezzotataleCarrello()方法的代码:
getPrezzotataleCarrello方法位于扩展SQLiteOpenHelper的类中
Prezzo_Total是一个包含双值的列。
令人难以置信的是,我用一个包含整数值的列尝试了相同的代码,并且效果很好。
我不明白为什么会这样
我必须使用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;
}
}
class custom\u list\u one扩展BaseAdapter
{
私人停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场;
视窗座;
private ArrayList cartList=new ArrayList();
int cartCounter;
字体;
语境;
NumberFormat format=NumberFormat.getInstance(Locale.ITALY);
公共自定义列表(上下文上下文、ArrayList购物车列表){
layoutInflater=layoutInflater.from(上下文);
this.cartList=购物车列表;
this.cartCounter=cartList.size();
this.context=上下文;
//type=Typeface.createFromAsset(context.getAssets(),“font/book.TTF”);
}
@凌驾
public int getCount(){
返回计数器;
}
@凌驾
公共对象getItem(int arg0){
返回cartList.get(arg0);
}
@凌驾
公共长getItemId(int arg0){
返回arg0;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
Prodotti tempProdotti=购物车列表.get(位置);
if(convertView==null)
{
convertView=LayoutFlater.充气(R.layout.listone\u自定义,空);
holder=新的ViewHolder();
holder.nome=(TextView)convertView.findViewById(R.id.product\u 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=(ViewHolder)convertView.getTag();
}
holder.nome.setText(temprodotti.getNome());
支架.名称.字体(类型);
holder.quantita_scelta.setText(tempProdotti.getQuantita());
保持器。定量。设置字体(类型);
holder.prezzo.setText(temprodotti.getPrezzo());
夹持器。前置。设置字体(类型);
//奥特尼亚莫·拉索玛·迪图蒂和卡雷罗的产品
Double-somma=sqLite.getprezzotatalecarello();
Log.d(String.valueOf(somma),“visualizeziamooo”);
字符串sommaStringa=String.valueOf(somma);
prezzotatalecarello.setText(String.valueOf(sommaStringa));
/*
游标c=sqLite.getPrezzotatalecarello();
while(c.moveToNext())
{
//prezzotatalecarrello.setText(String.valueOf(String.format(“%.2f”),c.getDouble(c.getColumnIndex(“Somma_totale”)));
双倍总计=c.getDouble(0);
prezzotatalecarrello.setText(String.valueOf(String.format(“%.2f”,总计));
Log.d(prezzotatalecarrello.getText().toString(),“Visualizeziamo”);
}*/
//Number number2=format.parse(temprodotti.getPrezzo());
//Double prezzotataleprodotto=number2.doubleValue();
//在卡雷罗的产品的总体设计中,相对性测试是最重要的
//prezzotatalecarrello.setText(String.valueOf(String.format(“%.2f”),(prezzotatale+prezzotataleprodotto));
/*
}捕获(解析异常){
e、 printStackTrace();
}*/
holder.cancel.setOnClickListener(新的MyPersonalClickListener(“按钮删除”,tempProdotti));
返回视图;
}
类视图持有者
{
TextView-nome;
TextView prezzo;
TextView quantita_scelta;
图像按钮取消;
}
}
如下更改:
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));
我只是在BD上运行了相同的查询,它运行正常。但我没有得到求和值。它应该是一个双精度值。哪里可能有错误?由于sql似乎运行正常,您应该检查您的Android代码。问题可能就在那里。让我们来看看。
//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));