From 8379f8914024fa5bf4bf9564e8912bc6ee78821f Mon Sep 17 00:00:00 2001
From: phanhuuloi27 <73208452+Nezumi2711@users.noreply.github.com>
Date: Mon, 4 Jul 2022 11:37:18 +0700
Subject: [PATCH] Add show list favorites food
---
Foodify/app/src/main/AndroidManifest.xml | 3 +
.../app/src/main/assets/databases/EatItDB.db | Bin 40960 -> 40960 bytes
.../waterbase/foodify/Database/Database.java | 39 +++++-
.../waterbase/foodify/FavoritesActivity.java | 83 ++++++++++++
.../java/com/waterbase/foodify/FoodList.java | 17 ++-
.../Helper/RecyclerItemTouchHelper.java | 49 +++++--
.../main/java/com/waterbase/foodify/Home.java | 2 +
.../waterbase/foodify/Model/Favorites.java | 84 ++++++++++++
.../com/waterbase/foodify/SearchActivity.java | 21 ++-
.../foodify/ViewHolder/FavoritesAdapter.java | 125 ++++++++++++++++++
.../ViewHolder/FavoritesViewHolder.java | 50 +++++++
.../main/res/layout/activity_favorites.xml | 17 +++
.../main/res/layout/activity_food_list.xml | 2 +-
.../app/src/main/res/layout/favorite_item.xml | 123 +++++++++++++++++
.../main/res/menu/activity_main_drawer.xml | 6 +
15 files changed, 601 insertions(+), 20 deletions(-)
create mode 100644 Foodify/app/src/main/java/com/waterbase/foodify/FavoritesActivity.java
create mode 100644 Foodify/app/src/main/java/com/waterbase/foodify/Model/Favorites.java
create mode 100644 Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/FavoritesAdapter.java
create mode 100644 Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/FavoritesViewHolder.java
create mode 100644 Foodify/app/src/main/res/layout/activity_favorites.xml
create mode 100644 Foodify/app/src/main/res/layout/favorite_item.xml
diff --git a/Foodify/app/src/main/AndroidManifest.xml b/Foodify/app/src/main/AndroidManifest.xml
index e91c296..6d6a496 100644
--- a/Foodify/app/src/main/AndroidManifest.xml
+++ b/Foodify/app/src/main/AndroidManifest.xml
@@ -20,6 +20,9 @@
android:theme="@style/Theme.Foodify"
tools:replace="android:theme"
tools:targetApi="31">
+
r&A`rem4R;p_Z2=h-uJva
zxUTZH^6%x}yRp%pONr+;qqw-fJ|mFk2hq*$C5cHnsl|;oeC*=#@<9G%e|~XB_Q~n|
z_Vr3``S~e+iMgptoFT3eAv#=~V3B~L%w#kn-_*QP&lFT;p1FzXXv$nNi<9$9^GZ+^
zx}+8-7iAWdWaj6=B?5vxeJ8Ktm*0Gan}d-#mSNT8`#d&6YA
zZ78dPlA9s_X5o9pU_3dIuaSj;fl+SqGrsFAj{I!mKy!2^
hYw-&)a%@WA7GPxBEST_xf02R1Bn56pb_l0I0RSKjUq1i<
delta 246
zcmZoTz|?SnX@ayMI|Bm)7Z7s*F%u9AOw=)!XJ^p!ujS>r&A`rmg@JDZzbjuX_Z2=h
z-uJvacy9CD-Yh8K!Y#y`$S5hU4{Yw%zU*YCpWPZeOck)4goypw10_^dI
zTzrohE`s>7M#Y6WN%1AAxdrhhiAg!B@rIm0xufFB%8bpHlkag$GqO+q#jVBZ=@;Va
z?iysuJNYB8#^gu5)hvdbY~qs>`5IaHPckG=e#Uow@(FGpHlSn8J(VXv getAllFavorites(String userPhone)
+ {
+ SQLiteDatabase db = getReadableDatabase();
+ SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
+
+ String[] sqlSelect = {"UserPhone", "FoodId", "FoodName", "FoodPrice", "FoodMenuId", "FoodImage", "FoodDiscount", "FoodDescription"};
+ String sqlTable = "Favorites";
+
+ qb.setTables(sqlTable);
+ Cursor c = qb.query(db, sqlSelect, "UserPhone=?", new String[]{userPhone}, null, null, null);
+
+ final List result = new ArrayList<>();
+ if(c.moveToFirst())
+ {
+ do{
+ result.add(new Favorites(
+ c.getString(c.getColumnIndexOrThrow("FoodId")),
+ c.getString(c.getColumnIndexOrThrow("FoodName")),
+ c.getString(c.getColumnIndexOrThrow("FoodPrice")),
+ c.getString(c.getColumnIndexOrThrow("FoodMenuId")),
+ c.getString(c.getColumnIndexOrThrow("FoodImage")),
+ c.getString(c.getColumnIndexOrThrow("FoodDiscount")),
+ c.getString(c.getColumnIndexOrThrow("FoodDescription")),
+ c.getString(c.getColumnIndexOrThrow("UserPhone"))
+ ));
+ }while (c.moveToNext());
+ }
+
+ return result;
+ }
+
public void removeFromFavorites(String foodId, String userPhone) {
SQLiteDatabase db = getReadableDatabase();
String query = String.format("DELETE FROM Favorites WHERE FoodId='%s' and UserPhone='%s';", foodId, userPhone);
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/FavoritesActivity.java b/Foodify/app/src/main/java/com/waterbase/foodify/FavoritesActivity.java
new file mode 100644
index 0000000..aa7b652
--- /dev/null
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/FavoritesActivity.java
@@ -0,0 +1,83 @@
+package com.waterbase.foodify;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.ItemTouchHelper;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import android.graphics.Color;
+import android.os.Bundle;
+import android.view.View;
+import android.view.animation.AnimationUtils;
+import android.view.animation.LayoutAnimationController;
+import android.widget.RelativeLayout;
+
+import com.google.android.material.snackbar.Snackbar;
+import com.waterbase.foodify.Common.Common;
+import com.waterbase.foodify.Database.Database;
+import com.waterbase.foodify.Helper.RecyclerItemTouchHelper;
+import com.waterbase.foodify.Interface.RecyclerItemTouchHelperListener;
+import com.waterbase.foodify.Model.Favorites;
+import com.waterbase.foodify.ViewHolder.FavoritesAdapter;
+import com.waterbase.foodify.ViewHolder.FavoritesViewHolder;
+
+public class FavoritesActivity extends AppCompatActivity implements RecyclerItemTouchHelperListener {
+
+ RecyclerView recyclerView;
+ RecyclerView.LayoutManager layoutManager;
+
+ FavoritesAdapter adapter;
+
+ RelativeLayout rootLayout;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_favorites);
+
+ rootLayout = findViewById(R.id.rootLayout);
+
+ recyclerView = findViewById(R.id.recycler_fav);
+ layoutManager = new LinearLayoutManager(this);
+ recyclerView.setLayoutManager(layoutManager);
+
+ //Swipe to delete
+ ItemTouchHelper.SimpleCallback itemTouchHelperCallback = new RecyclerItemTouchHelper(0, ItemTouchHelper.LEFT, this);
+ new ItemTouchHelper(itemTouchHelperCallback).attachToRecyclerView(recyclerView);
+
+ loadFavorites();
+ }
+
+ private void loadFavorites() {
+ adapter = new FavoritesAdapter(this, new Database(this).getAllFavorites(Common.currentUser.getPhone()));
+ recyclerView.setAdapter(adapter);
+ }
+
+ @Override
+ public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction, int position) {
+ if(viewHolder instanceof FavoritesViewHolder)
+ {
+ String name = ((FavoritesAdapter)recyclerView.getAdapter()).getItem(position).getFoodName();
+
+ Favorites deleteItem = ((FavoritesAdapter)recyclerView.getAdapter()).getItem(viewHolder.getAdapterPosition());
+ int deleteIndex = viewHolder.getAdapterPosition();
+
+ adapter.removeItem(viewHolder.getAdapterPosition());
+ new Database(getBaseContext()).removeFromFavorites(deleteItem.getFoodId(), Common.currentUser.getPhone());
+
+ //Make Snackbar
+ Snackbar snackbar = Snackbar.make(rootLayout, name + " đã xoá khỏi danh sách yêu thích của bạn!", Snackbar.LENGTH_LONG);
+ snackbar.setAction("Hoàn tác", new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ adapter.restoreItem(deleteItem, deleteIndex);
+ new Database(getBaseContext()).addToFavorites(deleteItem);
+// updateTotalPrice();
+
+ }
+ });
+ snackbar.setActionTextColor(Color.YELLOW);
+ snackbar.show();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/FoodList.java b/Foodify/app/src/main/java/com/waterbase/foodify/FoodList.java
index 51caefa..8b6953e 100644
--- a/Foodify/app/src/main/java/com/waterbase/foodify/FoodList.java
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/FoodList.java
@@ -34,6 +34,7 @@ import com.squareup.picasso.Picasso;
import com.waterbase.foodify.Common.Common;
import com.waterbase.foodify.Database.Database;
import com.waterbase.foodify.Interface.ItemClickListener;
+import com.waterbase.foodify.Model.Favorites;
import com.waterbase.foodify.Model.Food;
import com.waterbase.foodify.Model.Order;
import com.waterbase.foodify.ViewHolder.FoodViewHolder;
@@ -189,7 +190,7 @@ public class FoodList extends AppCompatActivity {
}
});
- recyclerView = (RecyclerView) findViewById(R.id.recyler_food);
+ recyclerView = (RecyclerView) findViewById(R.id.recycler_food);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
@@ -342,8 +343,20 @@ public class FoodList extends AppCompatActivity {
viewHolder.fav_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
+
+ Favorites favorites = new Favorites();
+
+ favorites.setFoodId(adapter.getRef(viewHolder.getAdapterPosition()).getKey());
+ favorites.setFoodName(model.getName());
+ favorites.setFoodDescription(model.getDescription());
+ favorites.setFoodDiscount(model.getDiscount());
+ favorites.setFoodImage(model.getImage());
+ favorites.setFoodMenuId(model.getMenuId());
+ favorites.setUserPhone(Common.currentUser.getPhone());
+ favorites.setFoodPrice(model.getPrice());
+
if (!localDB.isFavorite(adapter.getRef(viewHolder.getAdapterPosition()).getKey(), Common.currentUser.getPhone())) {
- localDB.addToFavorites(adapter.getRef(viewHolder.getAdapterPosition()).getKey(), Common.currentUser.getPhone());
+ localDB.addToFavorites(favorites);
viewHolder.fav_image.setImageResource(R.drawable.ic_baseline_favorite_24);
Toast.makeText(FoodList.this, model.getName() + " đã thêm vào danh sách yêu thích", Toast.LENGTH_SHORT).show();
} else {
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/Helper/RecyclerItemTouchHelper.java b/Foodify/app/src/main/java/com/waterbase/foodify/Helper/RecyclerItemTouchHelper.java
index 40b8042..5eff05c 100644
--- a/Foodify/app/src/main/java/com/waterbase/foodify/Helper/RecyclerItemTouchHelper.java
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/Helper/RecyclerItemTouchHelper.java
@@ -10,6 +10,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.waterbase.foodify.Interface.RecyclerItemTouchHelperListener;
import com.waterbase.foodify.ViewHolder.CartViewHolder;
+import com.waterbase.foodify.ViewHolder.FavoritesViewHolder;
public class RecyclerItemTouchHelper extends ItemTouchHelper.SimpleCallback {
@@ -27,7 +28,7 @@ public class RecyclerItemTouchHelper extends ItemTouchHelper.SimpleCallback {
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
- if(listener != null)
+ if (listener != null)
listener.onSwiped(viewHolder, direction, viewHolder.getAdapterPosition());
}
@@ -38,28 +39,54 @@ public class RecyclerItemTouchHelper extends ItemTouchHelper.SimpleCallback {
@Override
public void clearView(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
- View foregroundView = ((CartViewHolder)viewHolder).view_foreground;
- getDefaultUIUtil().clearView(foregroundView);
+ if (viewHolder instanceof CartViewHolder) {
+ View foregroundView = ((CartViewHolder) viewHolder).view_foreground;
+ getDefaultUIUtil().clearView(foregroundView);
+ } else if(viewHolder instanceof FavoritesViewHolder)
+ {
+ View foregroundView = ((FavoritesViewHolder) viewHolder).view_foreground;
+ getDefaultUIUtil().clearView(foregroundView);
+ }
}
@Override
public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
- View foregroundView = ((CartViewHolder)viewHolder).view_foreground;
- getDefaultUIUtil().onDraw(c, recyclerView, foregroundView, dX, dY, actionState, isCurrentlyActive);
+ if (viewHolder instanceof CartViewHolder) {
+ View foregroundView = ((CartViewHolder) viewHolder).view_foreground;
+ getDefaultUIUtil().onDraw(c, recyclerView, foregroundView, dX, dY, actionState, isCurrentlyActive);
+ } else if(viewHolder instanceof FavoritesViewHolder)
+ {
+ View foregroundView = ((FavoritesViewHolder) viewHolder).view_foreground;
+ getDefaultUIUtil().onDraw(c, recyclerView, foregroundView, dX, dY, actionState, isCurrentlyActive);
+ }
+
}
@Override
public void onSelectedChanged(@Nullable RecyclerView.ViewHolder viewHolder, int actionState) {
- if(viewHolder != null)
- {
- View foregroundView = ((CartViewHolder)viewHolder).view_foreground;
- getDefaultUIUtil().onSelected(foregroundView);
+ if (viewHolder != null) {
+ if (viewHolder instanceof CartViewHolder) {
+ View foregroundView = ((CartViewHolder) viewHolder).view_foreground;
+ getDefaultUIUtil().onSelected(foregroundView);
+ } else if(viewHolder instanceof FavoritesViewHolder)
+ {
+ View foregroundView = ((FavoritesViewHolder) viewHolder).view_foreground;
+ getDefaultUIUtil().onSelected(foregroundView);
+ }
+
}
}
@Override
public void onChildDrawOver(@NonNull Canvas c, @NonNull RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
- View foregroundView = ((CartViewHolder)viewHolder).view_foreground;
- getDefaultUIUtil().onDrawOver(c, recyclerView, foregroundView, dX, dY, actionState, isCurrentlyActive);
+ if (viewHolder instanceof CartViewHolder) {
+ View foregroundView = ((CartViewHolder) viewHolder).view_foreground;
+ getDefaultUIUtil().onDrawOver(c, recyclerView, foregroundView, dX, dY, actionState, isCurrentlyActive);
+ } else if(viewHolder instanceof FavoritesViewHolder)
+ {
+ View foregroundView = ((FavoritesViewHolder) viewHolder).view_foreground;
+ getDefaultUIUtil().onDrawOver(c, recyclerView, foregroundView, dX, dY, actionState, isCurrentlyActive);
+ }
+
}
}
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/Home.java b/Foodify/app/src/main/java/com/waterbase/foodify/Home.java
index d066586..5470c3c 100644
--- a/Foodify/app/src/main/java/com/waterbase/foodify/Home.java
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/Home.java
@@ -327,6 +327,8 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati
showHomeAddressDialog();
} else if (id == R.id.nav_setting) {
showSettingDialog();
+ } else if (id == R.id.nav_favorites) {
+ startActivity(new Intent(Home.this, FavoritesActivity.class));
}
else if (id == R.id.nav_log_out) {
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/Model/Favorites.java b/Foodify/app/src/main/java/com/waterbase/foodify/Model/Favorites.java
new file mode 100644
index 0000000..584a37d
--- /dev/null
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/Model/Favorites.java
@@ -0,0 +1,84 @@
+package com.waterbase.foodify.Model;
+
+public class Favorites {
+
+ private String FoodId, FoodName, FoodPrice, FoodMenuId, FoodImage, FoodDiscount, FoodDescription, UserPhone;
+
+ public Favorites() {
+ }
+
+ public Favorites(String foodId, String foodName, String foodPrice, String foodMenuId, String foodImage, String foodDiscount, String foodDescription, String userPhone) {
+ FoodId = foodId;
+ FoodName = foodName;
+ FoodPrice = foodPrice;
+ FoodMenuId = foodMenuId;
+ FoodImage = foodImage;
+ FoodDiscount = foodDiscount;
+ FoodDescription = foodDescription;
+ UserPhone = userPhone;
+ }
+
+ public String getFoodId() {
+ return FoodId;
+ }
+
+ public void setFoodId(String foodId) {
+ FoodId = foodId;
+ }
+
+ public String getFoodName() {
+ return FoodName;
+ }
+
+ public void setFoodName(String foodName) {
+ FoodName = foodName;
+ }
+
+ public String getFoodPrice() {
+ return FoodPrice;
+ }
+
+ public void setFoodPrice(String foodPrice) {
+ FoodPrice = foodPrice;
+ }
+
+ public String getFoodMenuId() {
+ return FoodMenuId;
+ }
+
+ public void setFoodMenuId(String foodMenuId) {
+ FoodMenuId = foodMenuId;
+ }
+
+ public String getFoodImage() {
+ return FoodImage;
+ }
+
+ public void setFoodImage(String foodImage) {
+ FoodImage = foodImage;
+ }
+
+ public String getFoodDiscount() {
+ return FoodDiscount;
+ }
+
+ public void setFoodDiscount(String foodDiscount) {
+ FoodDiscount = foodDiscount;
+ }
+
+ public String getFoodDescription() {
+ return FoodDescription;
+ }
+
+ public void setFoodDescription(String foodDescription) {
+ FoodDescription = foodDescription;
+ }
+
+ public String getUserPhone() {
+ return UserPhone;
+ }
+
+ public void setUserPhone(String userPhone) {
+ UserPhone = userPhone;
+ }
+}
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/SearchActivity.java b/Foodify/app/src/main/java/com/waterbase/foodify/SearchActivity.java
index 1d8e52d..3934182 100644
--- a/Foodify/app/src/main/java/com/waterbase/foodify/SearchActivity.java
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/SearchActivity.java
@@ -32,6 +32,7 @@ import com.squareup.picasso.Picasso;
import com.waterbase.foodify.Common.Common;
import com.waterbase.foodify.Database.Database;
import com.waterbase.foodify.Interface.ItemClickListener;
+import com.waterbase.foodify.Model.Favorites;
import com.waterbase.foodify.Model.Food;
import com.waterbase.foodify.Model.Order;
import com.waterbase.foodify.ViewHolder.FoodViewHolder;
@@ -123,11 +124,11 @@ public class SearchActivity extends AppCompatActivity {
}
});
- //Load add foods
- loadAddFood();
+ //Load all foods
+ loadAllFood();
}
- private void loadAddFood() {
+ private void loadAllFood() {
//Create query by category Id
Query searchByName = foodList;
//Create Options with query
@@ -191,8 +192,20 @@ public class SearchActivity extends AppCompatActivity {
viewHolder.fav_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
+
+ Favorites favorites = new Favorites();
+
+ favorites.setFoodId(adapter.getRef(position).getKey());
+ favorites.setFoodName(model.getName());
+ favorites.setFoodDescription(model.getDescription());
+ favorites.setFoodDiscount(model.getDiscount());
+ favorites.setFoodImage(model.getImage());
+ favorites.setFoodMenuId(model.getMenuId());
+ favorites.setUserPhone(Common.currentUser.getPhone());
+ favorites.setFoodPrice(model.getPrice());
+
if (!localDB.isFavorite(adapter.getRef(viewHolder.getAdapterPosition()).getKey(), Common.currentUser.getPhone())) {
- localDB.addToFavorites(adapter.getRef(viewHolder.getAdapterPosition()).getKey(), Common.currentUser.getPhone());
+ localDB.addToFavorites(favorites);
viewHolder.fav_image.setImageResource(R.drawable.ic_baseline_favorite_24);
Toast.makeText(SearchActivity.this, model.getName() + " đã thêm vào danh sách yêu thích", Toast.LENGTH_SHORT).show();
} else {
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/FavoritesAdapter.java b/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/FavoritesAdapter.java
new file mode 100644
index 0000000..aa50b9a
--- /dev/null
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/FavoritesAdapter.java
@@ -0,0 +1,125 @@
+package com.waterbase.foodify.ViewHolder;
+
+import android.content.Context;
+import android.content.Intent;
+import android.text.SpannableStringBuilder;
+import android.text.Spanned;
+import android.text.style.StrikethroughSpan;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.squareup.picasso.Picasso;
+import com.waterbase.foodify.Common.Common;
+import com.waterbase.foodify.Database.Database;
+import com.waterbase.foodify.FoodDetail;
+import com.waterbase.foodify.FoodList;
+import com.waterbase.foodify.Interface.ItemClickListener;
+import com.waterbase.foodify.Model.Favorites;
+import com.waterbase.foodify.Model.Order;
+import com.waterbase.foodify.R;
+
+import java.util.List;
+
+public class FavoritesAdapter extends RecyclerView.Adapter {
+
+ private Context context;
+ private List favoritesList;
+
+ public FavoritesAdapter(Context context, List favoritesList) {
+ this.context = context;
+ this.favoritesList = favoritesList;
+ }
+
+ @NonNull
+ @Override
+ public FavoritesViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View itemView = LayoutInflater.from(context)
+ .inflate(R.layout.favorite_item, parent, false);
+ return new FavoritesViewHolder(itemView);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull FavoritesViewHolder viewHolder, int position) {
+ Favorites model = favoritesList.get(position);
+
+ viewHolder.food_name.setText(model.getFoodName());
+
+ if (Integer.parseInt(model.getFoodDiscount()) > 0) {
+ String foodPrice = model.getFoodPrice() + "đ";
+ long newFoodPrice = Long.parseLong(model.getFoodPrice()) - Long.parseLong(model.getFoodPrice()) * Long.parseLong(model.getFoodDiscount()) / 100;
+ SpannableStringBuilder spnBuilder = new SpannableStringBuilder(foodPrice);
+ StrikethroughSpan strikethroughSpan = new StrikethroughSpan();
+ spnBuilder.setSpan(strikethroughSpan, 0, foodPrice.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+ viewHolder.food_price.setText(spnBuilder);
+ viewHolder.newPrice.setText(newFoodPrice + "đ");
+ viewHolder.discount.setText("- " + model.getFoodDiscount() + "%");
+ } else {
+ viewHolder.food_price.setText(String.format("%s đ", model.getFoodPrice()));
+ viewHolder.discount.setVisibility(View.GONE);
+ viewHolder.newPrice.setVisibility(View.GONE);
+ }
+
+ Picasso.with(context).load(model.getFoodImage()).into(viewHolder.food_image);
+
+ //Quick Cart
+
+ viewHolder.quick_cart.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ boolean ifExists = new Database(context).checkFoodExists(model.getFoodId(), Common.currentUser.getPhone());
+ if (!ifExists) {
+ new Database(context).addToCart(new Order(
+ Common.currentUser.getPhone(),
+ model.getFoodId(),
+ model.getFoodName(),
+ "1",
+ model.getFoodPrice(),
+ model.getFoodDiscount(),
+ model.getFoodImage()
+ ));
+ } else {
+ new Database(context).increaseCart(Common.currentUser.getPhone(), model.getFoodId());
+ }
+
+ Toast.makeText(context, "Đã thêm vào giỏ hàng!", Toast.LENGTH_SHORT).show();
+ }
+ });
+
+ viewHolder.setItemClickListener(new ItemClickListener() {
+ @Override
+ public void onClick(View view, int position, boolean isLongClick) {
+ //Start Activity
+ Intent foodDetail = new Intent(context, FoodDetail.class);
+ foodDetail.putExtra("FoodId", model.getFoodId()); // Send Food Id to new activity
+ context.startActivity(foodDetail);
+ }
+ });
+ }
+
+ @Override
+ public int getItemCount() {
+ return favoritesList.size();
+ }
+
+ public void removeItem(int position)
+ {
+ favoritesList.remove(position);
+ notifyItemRemoved(position);
+ }
+
+ public void restoreItem(Favorites item, int position)
+ {
+ favoritesList.add(position, item);
+ notifyItemInserted(position);
+ }
+
+ public Favorites getItem(int position)
+ {
+ return favoritesList.get(position);
+ }
+}
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/FavoritesViewHolder.java b/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/FavoritesViewHolder.java
new file mode 100644
index 0000000..d34290f
--- /dev/null
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/FavoritesViewHolder.java
@@ -0,0 +1,50 @@
+package com.waterbase.foodify.ViewHolder;
+
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.waterbase.foodify.Interface.ItemClickListener;
+import com.waterbase.foodify.R;
+
+public class FavoritesViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
+
+ public TextView food_name, food_price, discount, newPrice;
+ public ImageView food_image, fav_image, quick_cart;
+
+ public RelativeLayout view_background;
+ public LinearLayout view_foreground;
+
+ private ItemClickListener itemClickListener;
+
+ public void setItemClickListener(ItemClickListener itemClickListener) {
+ this.itemClickListener = itemClickListener;
+ }
+
+ public FavoritesViewHolder(@NonNull View itemView) {
+ super(itemView);
+
+ food_name = (TextView) itemView.findViewById(R.id.food_name);
+ food_image = (ImageView) itemView.findViewById(R.id.food_image);
+ fav_image = (ImageView) itemView.findViewById(R.id.fav);
+ food_price = (TextView) itemView.findViewById(R.id.food_price);
+ discount = (TextView) itemView.findViewById(R.id.discount);
+ newPrice = (TextView) itemView.findViewById(R.id.new_Price);
+ quick_cart = (ImageView) itemView.findViewById(R.id.btn_quick_cart);
+
+ view_background = (RelativeLayout) itemView.findViewById(R.id.view_background);
+ view_foreground = (LinearLayout) itemView.findViewById(R.id.view_foreground);
+
+ itemView.setOnClickListener(this);
+ }
+
+ @Override
+ public void onClick(View v) {
+ itemClickListener.onClick(v, getAdapterPosition(), false);
+ }
+}
diff --git a/Foodify/app/src/main/res/layout/activity_favorites.xml b/Foodify/app/src/main/res/layout/activity_favorites.xml
new file mode 100644
index 0000000..7fd874d
--- /dev/null
+++ b/Foodify/app/src/main/res/layout/activity_favorites.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Foodify/app/src/main/res/layout/activity_food_list.xml b/Foodify/app/src/main/res/layout/activity_food_list.xml
index a9bf13b..b945074 100644
--- a/Foodify/app/src/main/res/layout/activity_food_list.xml
+++ b/Foodify/app/src/main/res/layout/activity_food_list.xml
@@ -24,7 +24,7 @@
android:layout_below="@+id/searchBar"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:id="@+id/recyler_food"
+ android:id="@+id/recycler_food"
android:scrollbars="vertical"
/>
diff --git a/Foodify/app/src/main/res/layout/favorite_item.xml b/Foodify/app/src/main/res/layout/favorite_item.xml
new file mode 100644
index 0000000..97935d2
--- /dev/null
+++ b/Foodify/app/src/main/res/layout/favorite_item.xml
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Foodify/app/src/main/res/menu/activity_main_drawer.xml b/Foodify/app/src/main/res/menu/activity_main_drawer.xml
index 6dadcbd..f56cf3e 100644
--- a/Foodify/app/src/main/res/menu/activity_main_drawer.xml
+++ b/Foodify/app/src/main/res/menu/activity_main_drawer.xml
@@ -10,6 +10,12 @@
android:iconTint="@color/white"
android:title="Địa chỉ mặc định"
/>
+