تطبيق compteur de calories بأندرويد الجزء لثاني
نظرة سريعة بالفيديو
1- الملف Food.java
package model;
import java.io.Serializable;
/**
* Created by BELASRIIMAD on 09/02/2016.
*/
public class Food implements Serializable {
private static final long serialVersionId = 10L;
private String FoodName;
private int calories;
private int foodId;
private String recorDate;
public Food(String Food,int cal,int Id,String Date){
FoodName = Food;
calories = cal;
foodId = Id;
recorDate = Date;
}
public Food(){
}
public static long getSerialVersionId() {
return serialVersionId;
}
public String getFoodName() {
return FoodName;
}
public int getFoodId() {
return foodId;
}
public int getCalories() {
return calories;
}
public String getRecorDate() {
return recorDate;
}
public void setCalories(int calories) {
this.calories = calories;
}
public void setFoodName(String foodName) {
FoodName = foodName;
}
public void setFoodId(int foodId) {
this.foodId = foodId;
}
public void setRecorDate(String recorDate) {
this.recorDate = recorDate;
}
}
2- الملف Utils.java
package util;
import java.text.DecimalFormat;
/**
* Created by BELASRIIMAD on 12/02/2016.
*/
public class Utils {
public static String formatNumber(int value){
//formater un nombre sous la forme 1,000
DecimalFormat formatter = new DecimalFormat("#,###,###");
String formatted = formatter.format(value);
return formatted;
}
}
3- الملف Constants.java
package data;
/**
* Created by BELASRIIMAD on 09/02/2016.
*/
public class Constants {
public static final String DATABASE_NAME = "caldb";
public static final int DATABASE_VERSION = 1;
public static final String TABLE_NAME = "food_table";
public static final String FOOD_NAME = "name";
public static final String FOOD_CALORIES_NAME = "calories";
public static final String DATE_FOOD = "date";
public static final String KEY_ID = "_id";
}
4- الملف DataBaseHandler.java
دائما فالمجلد java فل package data كنزيد ملف جديد كنسميه DataBaseHandler.java لي عبارة عن class java لي غادي يكونوا فيها les requêtes sql لي غادي يمكنونا من الإضافة التعديل والحدف فهنا la classe كت hériter من la classe SQLiteOpenHelper منبعد عندي واحد ل arraylist لي غادي تاخد les données من la base de données من بعد عندي ل constructeur لي كياخد السمية ديال la base de données ولي كتجينا من Constants.java و ملي كن créer l'objet من la classe كتزاد la table ب les champs ديالها من بعد عندنا ل fonction getSavedItems لي كترجع le nombre d'aliments لي ف la base منبعد عندي deleteFood لي كتمسح أكلة من قاعدة البيانات بالإعتماد على ل id ديالها من بعد كاين addFood ليكتزيد أكلة من بعد كاين getFoods لي كترجع les aliments من la base الكود ديال الملف هو :
package data;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
import model.Food;
/**
* Created by BELASRIIMAD on 09/02/2016.
*/
public class DataBaseHandler extends SQLiteOpenHelper {
private ArrayList<Food> foodList = new ArrayList<>();
public DataBaseHandler(Context context) {
super(context,Constants.DATABASE_NAME,null,Constants.DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_TABLE = "CREATE TABLE "+ Constants.TABLE_NAME + "(" +
Constants.KEY_ID + " INTEGER PRIMARY KEY ," + Constants.FOOD_NAME + " TEXT ," +
Constants.FOOD_CALORIES_NAME + " INTEGER ," + Constants.DATE_FOOD + " Long);";
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(" DROP TABLE IF EXISTS" + Constants.TABLE_NAME);
//create a new one
onCreate(db);
}
//get total foods saved
public int getSavedItems(){
int totalItems = 0;
String query = " SELECT * FROM " + Constants.TABLE_NAME;
SQLiteDatabase dba = this.getReadableDatabase();
Cursor cursor = dba.rawQuery(query,null);
totalItems = cursor.getCount();
cursor.close();
dba.close();
return totalItems;
}
//get Total calories
public int getTotalCalories(){
int cals = 0;
String query = " SELECT SUM(" + Constants.FOOD_CALORIES_NAME + ")" + " FROM " + Constants.TABLE_NAME;
SQLiteDatabase dba = this.getReadableDatabase();
Cursor cursor = dba.rawQuery(query,null);
if(cursor.moveToNext()){
cals = cursor.getInt(0);
}
cursor.close();
dba.close();
return cals;
}
//delete food
public void deleteFood(int id){
SQLiteDatabase dba = this.getReadableDatabase();
dba.delete(Constants.TABLE_NAME, Constants.KEY_ID + " = ? ", new String[]{String.valueOf(id)});
dba.close();
}
//add food
public void addFood(Food food){
SQLiteDatabase dba = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(Constants.FOOD_NAME,food.getFoodName());
values.put(Constants.FOOD_CALORIES_NAME,food.getCalories());
values.put(Constants.DATE_FOOD, food.getRecorDate());
dba.insert(Constants.TABLE_NAME, null, values);
Log.v("Aliment ajouté", "yes");
dba.close();
}
public ArrayList<Food> getFoods(){
foodList.clear();
SQLiteDatabase dba = this.getReadableDatabase();
Cursor cursor = dba.query(Constants.TABLE_NAME,new String[]{Constants.KEY_ID,Constants.FOOD_NAME,Constants.FOOD_CALORIES_NAME,Constants.DATE_FOOD},null,null,null,null,Constants.DATE_FOOD + " DESC ");
if(cursor.moveToNext()){
do {
Food food = new Food();
food.setFoodName(cursor.getString(cursor.getColumnIndex(Constants.FOOD_NAME)));
food.setCalories(cursor.getInt(cursor.getColumnIndex(Constants.FOOD_CALORIES_NAME)));
food.setFoodId(cursor.getInt(cursor.getColumnIndex(Constants.KEY_ID)));
DateFormat dateFormat = DateFormat.getDateInstance();
String date = dateFormat.format(new Date(cursor.getLong(cursor.getColumnIndex(Constants.DATE_FOOD))).getTime());
food.setRecorDate(date);
foodList.add(food);
}while(cursor.moveToNext());
}
cursor.close();
dba.close();
return foodList;
}
}