如何在Android中的购物车列表视图中更新总价格

时间:2016-08-02 09:39:38

标签: android

我有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;
}

4 个答案:

答案 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;
}