合計欄SQLiteのAndroidとのTextViewに表示

ロバート・バシレ:

私は私のAndroidのプロジェクトでSQLiteのDBを持っています。私はこのDBからいくつかのアイテムを表示し、「カートに入れる」活動のためのRecyclerViewを持っています。すべての項目は、独自の「量」と「価格」があります。私が何をしたいのか、1つのTextViewの要素の総和(合計価格= Elem1(数量*価格)+のElem2(数量*価格)+ ...)を表示するためのメソッドを作成することです。私は自分のデータベースを停止してみましょう。私は任意の助けに感謝します!

public class DatabaseHelper extends SQLiteOpenHelper {

public static final String DATABASE_NAME = "favorites.db";
public static final String TABLE_NAME_CART = "cart_table";
public static final String COL_1 = "IMAGE";
public static final String COL_2 = "NAME";
public static final String COL_3 = "PRICE";
public static final String COL_4 = "DETAILS";
public static final String COL_5 = "MODEL";
public static final String COL_6 = "IMAGEE";
public static final String COL_7 = "IMAGEEE";
public static final String COL_8 = "QUANTITY";
public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, 1);
}

private static DatabaseHelper sDatabaseHelper;

public DatabaseHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
    super(context, name, factory, version);
}



public static DatabaseHelper getInstance(Context context) {
    if (sDatabaseHelper == null) {
        sDatabaseHelper = new DatabaseHelper(context);
    }
    return sDatabaseHelper;
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE " + TABLE_NAME_CART + " (" + COL_1 + " INTEGER, " + COL_2 + " VARCHAR, " + COL_3 + " INTEGER, " + COL_4 + " VARCHAR, " + COL_5 + " VARCHAR, " + COL_6 + " INTEGER, " + COL_7 + " INTEGER, " + COL_8 + " INTEGER);");

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME_CART);
    onCreate(db);
}

// Insert Data in cart table
public boolean insertDataCart(items items) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(COL_1, items.getlImageId());
    contentValues.put(COL_2, items.getlName());
    contentValues.put(COL_3, items.getlPrice());
    contentValues.put(COL_4, items.getlDetails());
    contentValues.put(COL_5, items.getlModel());
    contentValues.put(COL_6, items.getlImageId1());
    contentValues.put(COL_7, items.getlImageId2());
    contentValues.put(COL_8, items.getQuantity());

    long result = db.insert(TABLE_NAME_CART, null, contentValues);

    if (result == -1) {
        return false;
    } else {
        return true;
    }
}

// See Data Cart
public ArrayList<items> getAllDataCart() {
    ArrayList<items> favItem = new ArrayList<>();
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor res = db.rawQuery("select * from " + TABLE_NAME_CART, null);

    while (res.moveToNext()) {
        int img = res.getInt(0);
        String name = res.getString(1);
        int price = res.getInt(2);
        String details = res.getString(3);
        String model = res.getString(4);
        int img1 = res.getInt(5);
        int img2 = res.getInt(6);
        int quantity = res.getInt(7);
        items newItems = new items(name, price, img, img1, img2, details, model,quantity);
        favItem.add(newItems);
    }
    return favItem;
}

// Sum total items price
public void sumPriceCartItems(int sum) {
    int val;
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery("select "+ COL_3 + "  from " + TABLE_NAME_CART, null);
    Cursor cursor2 = db.rawQuery("select "+ COL_8 + "  from " + TABLE_NAME_CART, null);

    if(cursor.moveToFirst())
    while (cursor.moveToNext() && cursor2.moveToNext()) {
       val = COL_3 * cursor2;
    }

}


// Delete Data Cart
public void deleteCart(int id) {
    SQLiteDatabase db = this.getWritableDatabase();
    db.delete(TABLE_NAME_CART, COL_1 + "=" + id, null);
}

// Update Cart Quantity
public void updateDataCard(int id, int quantity) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues val = new ContentValues();
    val.put(COL_8, quantity);

    db.update(TABLE_NAME_CART, val, "IMAGE=" + id, null);

}
離れて渡します:

この方法の変更sumPriceCartItems()のあなたのDatabaseHelperこれまでを:

public int sumPriceCartItems() {
    int result = 0;
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery("select sum("+ COL_3 + " * " + COL_8 + ") from " + TABLE_NAME_CART, null);
    if (cursor.moveToFirst()) result = cursor.getInt(0);
    cursor.close();
    db.close(); 
    return result;
}

これだけ1使用することによりCursor、ループを必要とせずに、それはあなたが望むことを合計を返します。
あなたの活動のコードで合計を取得し、それを表示しますTextView

DatabaseHelper db = DatabaseHelper.getInstance(this);
textView.setText("" + db.sumPriceCartItems());

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=8009&siteId=1