我有ListView
从我现有的数据库中显示购物车中的商品,在底部我创建了购物车中所有商品总价的TextView
,但总价格是根据我购物车中的产品,底部的显示不会更新。我没有弄到哪里我弄错了,请帮帮我。
总价格TextView
的xml代码:
<TextView
android:id="@+id/totalItemPrice"
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="RS "
android:textSize="20dp"
android:layout_marginLeft="15dp"
android:layout_marginTop="20dp"
android:textColor="#FFFFFF"/>
AddToCartFragment.java:
private ArrayList<GenieCart_List_Model> mAddList;
private void getCart_Data() {
try {
db = new DataBasehelper1(getActivity());
mAddList = new ArrayList<GenieCart_List_Model>();
mAddList = db.getAllCotacts();
long sum = db.sum_Of_Rs();
mTotalItemPrice.setText("Total Rs : " + sum);
db.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
DataBaseHelper1.java:
public long sum_Of_Rs() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery(" select * from " +CONTACTS_TABLE_NAME + " ORDER BY " + CONTACTS_PRODUCT_ID + " DESC " , null);
ArrayList<GenieCart_List_Model> list = new ArrayList<GenieCart_List_Model>();
try {
res.moveToFirst();
for (int i = 0; i < res.getCount(); i++) {
GenieCart_List_Model Prod_Details = new GenieCart_List_Model();
Prod_Details.setPrice(res.getString(res.getColumnIndex(CONTACTS_PRODUCT_RS)));
Prod_Details.setProdID(res.getString(res.getColumnIndex(CONTACTS_PRODUCT_ID)));
try {
int total = Integer.parseInt(res.getString(res.getColumnIndex(CONTACTS_PRODUCT_RS)));
Sum = Sum + total;
return Sum;
} catch (Exception e) {
e.printStackTrace();
}
list.add(Prod_Details);
res.moveToNext();
}
}
catch (Exception e) {
e.printStackTrace();
}
return Sum;
}
答案 0 :(得分:0)
我认为这是转换问题。
像这样设置文字
mTotalItemPrice.setText(“Total Rs:”+ String.valueOf(sum));
答案 1 :(得分:0)
我建议将您的SQL查询更改为:
public long sum_Of_Rs() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor c = db.rawQuery("SELECT SUM ( " +CONTACTS_PRODUCT_RS + ") FROM " + CONTACTS_TABLE_NAME , null);
c.moveToFirst();
int i = c.getInt(0);
c.close();
return i;
}
PS:SUM()将返回与您正在阅读的列的格式相同的数字。如果CONTACTS_PRODUCT_RS是浮动/双重使用
float i = c.getFloat(0);
double i = c.getDouble(0);
希望它有所帮助!! :))
答案 2 :(得分:0)
从try catch中删除“return sum;”行。
答案 3 :(得分:0)
您的方法sum_Of_Rs()
是对的。要更新总费用,请调用方法sum_Of_Rs()
,并在每次添加或删除购物车中的项目时将结果设置为TextView,即如果您使用ListView,则在向列表视图通知数据更改时始终执行以下步骤使用notifyDataSetChanged()
,您还可以通过将方法更改为以下内容来改进方法 sum_Of_Rs():
public long sum_Of_Rs() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT SUM (" + CONTACTS_PRODUCT_RS + ") FROM " + CONTACTS_TABLE_NAME , null);
cursor.moveToFirst();
int sum = cursor.getInt(0);
cursor.close();
return sum;
}