From 435d3f8fd2edd1d42ad74df9601048d4421a28eb Mon Sep 17 00:00:00 2001 From: Nezumi <123229563+Nez27@users.noreply.github.com> Date: Thu, 9 Mar 2023 17:17:54 +0700 Subject: [PATCH] Merge home fragment to back-end API project --- app/src/main/AndroidManifest.xml | 1 + .../com/capstone/foodify/API/FoodApi.java | 24 +-- .../foodify/Activity/FoodDetailActivity.java | 141 +++++++++--------- .../foodify/Activity/ShopDetailActivity.java | 6 +- .../foodify/Fragment/HomeFragment.java | 100 ++++++++----- .../foodify/Fragment/SearchFragment.java | 2 +- .../com/capstone/foodify/Model/Food/Food.java | 114 ++++++++------ .../foodify/Model/Food/FoodAdapter.java | 24 ++- .../Model/Food/FoodFavoriteAdapter.java | 8 +- .../foodify/Model/Food/FoodSearchAdapter.java | 8 +- .../foodify/Model/Food/FoodShopAdapter.java | 8 +- .../foodify/Model/Food/ImageFood.java | 37 ----- .../com/capstone/foodify/Model/Image.java | 31 ++++ .../java/com/capstone/foodify/Model/Page.java | 49 ++++++ .../foodify/Model/Response/Foods.java | 27 ++++ .../foodify/Model/Response/Shops.java | 27 ++++ .../com/capstone/foodify/Model/Shop/Shop.java | 55 ++++++- .../foodify/Model/Shop/ShopAdapter.java | 13 +- app/src/main/res/drawable/burgerking.png | Bin 6153 -> 0 bytes app/src/main/res/drawable/dominopizza.png | Bin 2904 -> 0 bytes app/src/main/res/drawable/mcdonals.png | Bin 2141 -> 0 bytes app/src/main/res/drawable/pizzahut.png | Bin 3294 -> 0 bytes app/src/main/res/drawable/subway.png | Bin 1780 -> 0 bytes app/src/main/res/layout/fragment_home.xml | 29 ++-- app/src/main/res/layout/item_food.xml | 4 +- app/src/main/res/layout/item_shop.xml | 37 +++-- 26 files changed, 489 insertions(+), 256 deletions(-) delete mode 100644 app/src/main/java/com/capstone/foodify/Model/Food/ImageFood.java create mode 100644 app/src/main/java/com/capstone/foodify/Model/Image.java create mode 100644 app/src/main/java/com/capstone/foodify/Model/Page.java create mode 100644 app/src/main/java/com/capstone/foodify/Model/Response/Foods.java create mode 100644 app/src/main/java/com/capstone/foodify/Model/Response/Shops.java delete mode 100644 app/src/main/res/drawable/burgerking.png delete mode 100644 app/src/main/res/drawable/dominopizza.png delete mode 100644 app/src/main/res/drawable/mcdonals.png delete mode 100644 app/src/main/res/drawable/pizzahut.png delete mode 100644 app/src/main/res/drawable/subway.png diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8aa1e18..4b265cd 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,6 +13,7 @@ android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" + android:usesCleartextTraffic="true" android:theme="@style/Theme.Foodify" tools:replace="android:theme" tools:targetApi="31"> diff --git a/app/src/main/java/com/capstone/foodify/API/FoodApi.java b/app/src/main/java/com/capstone/foodify/API/FoodApi.java index b6d42de..d4cb7b3 100644 --- a/app/src/main/java/com/capstone/foodify/API/FoodApi.java +++ b/app/src/main/java/com/capstone/foodify/API/FoodApi.java @@ -3,7 +3,8 @@ package com.capstone.foodify.API; import com.capstone.foodify.Model.Category.Category; import com.capstone.foodify.Model.DistrictWard.DistrictWardResponse; import com.capstone.foodify.Model.Food.Food; -import com.capstone.foodify.Model.Food.ImageFood; +import com.capstone.foodify.Model.Response.Foods; +import com.capstone.foodify.Model.Response.Shops; import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -25,18 +26,21 @@ public interface FoodApi { Gson gson = new GsonBuilder().setDateFormat("HH:mm:ss dd-MM-yyyy").create(); FoodApi apiService = new Retrofit.Builder() - .baseUrl("https://63eb52abbfdd4299674540d4.mockapi.io/api/v1/").addConverterFactory(GsonConverterFactory.create(gson)) + .baseUrl("http://10.0.2.2:8080/api/").addConverterFactory(GsonConverterFactory.create(gson)) .build() .create(FoodApi.class); - @GET("randomProduct") - Call> bestFoodResponse(); + @GET("products?pageNo=0&pageSize=10&sortBy=id&sortDir=asc") + Call recommendFood(); - @GET("recommend") - Call> drinksFoodResponse(); + @GET("products?pageNo=0&pageSize=10&sortBy=createdTime&sortDir=desc") + Call recentFood(); - @GET("listFood") - Call> listFood(@Query("search") String search, @Query("page") int page, @Query("limit") int limit); + @GET("shops?pageNo=0&pageSize=10&sortBy=id&sortDir=asc") + Call allShops(); + + @GET("products/search/") + Call> listFood(@Path("search") String search, @Query("pageNo") int pageNo, @Query("pageSize") int pageSize, @Query("sortBy") String sortBy, @Query("sortDir") String sortDir); @GET("listFood") Call> listFood(@Query("page") int page, @Query("limit") int limit); @@ -50,8 +54,8 @@ public interface FoodApi { @GET("detail/{id}") Call detailFood(@Path("id") String id); - @GET("detail/{id}/image") - Call> getImageFoodById(@Path("id") String id); +// @GET("detail/{id}/image") +// Call> getImageFoodById(@Path("id") String id); @GET("district/{districtId}/ward") Call> wardResponse(@Path("districtId") int district_id); diff --git a/app/src/main/java/com/capstone/foodify/Activity/FoodDetailActivity.java b/app/src/main/java/com/capstone/foodify/Activity/FoodDetailActivity.java index 22ffa60..f14d72e 100644 --- a/app/src/main/java/com/capstone/foodify/Activity/FoodDetailActivity.java +++ b/app/src/main/java/com/capstone/foodify/Activity/FoodDetailActivity.java @@ -13,8 +13,6 @@ import android.view.WindowManager; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; @@ -27,7 +25,6 @@ import com.capstone.foodify.API.FoodApi; import com.capstone.foodify.Common; import com.capstone.foodify.Model.Basket.Basket; import com.capstone.foodify.Model.Food.Food; -import com.capstone.foodify.Model.Food.ImageFood; import com.capstone.foodify.Model.Review.Review; import com.capstone.foodify.Model.Review.ReviewAdapter; import com.capstone.foodify.R; @@ -41,10 +38,8 @@ import com.saadahmedsoft.popupdialog.PopupDialog; import com.saadahmedsoft.popupdialog.Styles; import com.willy.ratingbar.RotationRatingBar; -import java.text.NumberFormat; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import retrofit2.Call; import retrofit2.Callback; @@ -153,38 +148,38 @@ public class FoodDetailActivity extends AppCompatActivity { add_to_basket_button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - if(horizontalQuantitizer.getValue() > 0){ - Basket foodInBasket = getFoodExistInBasket(food.getId()); - if(foodInBasket == null){ - //If item is not exist in basket - Common.LIST_BASKET_FOOD.add(new Basket(food.getId(), imageFood.get(0), food.getName(), food.getPrice(), "Shop Name", - String.valueOf(horizontalQuantitizer.getValue()), "0")); - Toast.makeText(FoodDetailActivity.this, "Thêm vào giỏ hàng thành công!", Toast.LENGTH_SHORT).show(); - startActivity(new Intent(FoodDetailActivity.this, MainActivity.class)); - } else { - //If item is exist in basket - - for(int i = 0; i < Common.LIST_BASKET_FOOD.size(); i++){ - String foodId = Common.LIST_BASKET_FOOD.get(i).getId(); - //Find foodId exist - if(foodId.equals(food.getId())){ - //Get quantity food from basket - String quantity = Common.LIST_BASKET_FOOD.get(i).getQuantity(); - - //Change quantity food from basket - int quantityInt = Integer.parseInt(quantity) + horizontalQuantitizer.getValue(); - Common.LIST_BASKET_FOOD.get(i).setQuantity(String.valueOf(quantityInt)); - break; - } - } - - Toast.makeText(FoodDetailActivity.this, "Thêm vào giỏ hàng thành công!", Toast.LENGTH_SHORT).show(); - startActivity(new Intent(FoodDetailActivity.this, MainActivity.class)); - } - - } else { - Toast.makeText(FoodDetailActivity.this, "Bạn chưa chọn số lượng đồ ăn cần đặt!", Toast.LENGTH_SHORT).show(); - } +// if(horizontalQuantitizer.getValue() > 0){ +// Basket foodInBasket = getFoodExistInBasket(food.getId()); +// if(foodInBasket == null){ +// //If item is not exist in basket +// Common.LIST_BASKET_FOOD.add(new Basket(food.getId(), imageFood.get(0), food.getName(), food.getPrice(), "Shop Name", +// String.valueOf(horizontalQuantitizer.getValue()), "0")); +// Toast.makeText(FoodDetailActivity.this, "Thêm vào giỏ hàng thành công!", Toast.LENGTH_SHORT).show(); +// startActivity(new Intent(FoodDetailActivity.this, MainActivity.class)); +// } else { +// //If item is exist in basket +// +// for(int i = 0; i < Common.LIST_BASKET_FOOD.size(); i++){ +// String foodId = Common.LIST_BASKET_FOOD.get(i).getId(); +// //Find foodId exist +// if(foodId.equals(food.getId())){ +// //Get quantity food from basket +// String quantity = Common.LIST_BASKET_FOOD.get(i).getQuantity(); +// +// //Change quantity food from basket +// int quantityInt = Integer.parseInt(quantity) + horizontalQuantitizer.getValue(); +// Common.LIST_BASKET_FOOD.get(i).setQuantity(String.valueOf(quantityInt)); +// break; +// } +// } +// +// Toast.makeText(FoodDetailActivity.this, "Thêm vào giỏ hàng thành công!", Toast.LENGTH_SHORT).show(); +// startActivity(new Intent(FoodDetailActivity.this, MainActivity.class)); +// } +// +// } else { +// Toast.makeText(FoodDetailActivity.this, "Bạn chưa chọn số lượng đồ ăn cần đặt!", Toast.LENGTH_SHORT).show(); +// } } }); @@ -227,23 +222,23 @@ public class FoodDetailActivity extends AppCompatActivity { } private void initData(){ - price = Float.parseFloat(food.getPrice()); - - foodName_txt.setText(food.getName()); - shopName_txt.setText("Shop Name"); - price_txt.setText(Common.changeCurrencyUnit(Float.parseFloat(food.getPrice()))); - discount_txt.setText("-" + food.getDiscount() + "%"); - description_content_txt.setText(food.getDescription()); - countRating_txt.setText(food.getReviewCount() + " rating"); - - add_to_basket_button.setText("ADD TO BASKET - " + Common.changeCurrencyUnit(0)); - - List slideModels = new ArrayList<>(); - if(imageFood != null){ - for(String imageUrl: imageFood) - slideModels.add(new SlideModel(imageUrl, null)); - } - imageSlider.setImageList(slideModels, ScaleTypes.FIT); +// price = Float.parseFloat(food.getPrice()); +// +// foodName_txt.setText(food.getName()); +// shopName_txt.setText("Shop Name"); +// price_txt.setText(Common.changeCurrencyUnit(Float.parseFloat(food.getPrice()))); +// discount_txt.setText("-" + food.getDiscount() + "%"); +// description_content_txt.setText(food.getDescription()); +// countRating_txt.setText(food.getReviewCount() + " rating"); +// +// add_to_basket_button.setText("ADD TO BASKET - " + Common.changeCurrencyUnit(0)); +// +// List slideModels = new ArrayList<>(); +// if(imageFood != null){ +// for(String imageUrl: imageFood) +// slideModels.add(new SlideModel(imageUrl, null)); +// } +// imageSlider.setImageList(slideModels, ScaleTypes.FIT); } @@ -267,25 +262,25 @@ public class FoodDetailActivity extends AppCompatActivity { } private void getImageFoodById(String foodId) { - FoodApi.apiService.getImageFoodById(foodId).enqueue(new Callback>() { - @Override - public void onResponse(Call> call, Response> response) { - List imageFoodData = response.body(); - if (imageFoodData != null){ - imageFood.clear(); - for(ImageFood imageFoodTemp: imageFoodData){ - imageFood.add(imageFoodTemp.getImageUrl()); - } - } - - getFoodById(foodId); - } - - @Override - public void onFailure(Call> call, Throwable t) { - Toast.makeText(FoodDetailActivity.this, "Lỗi Image" + t, Toast.LENGTH_SHORT).show(); - } - }); +// FoodApi.apiService.getImageFoodById(foodId).enqueue(new Callback>() { +// @Override +// public void onResponse(Call> call, Response> response) { +// List imageFoodData = response.body(); +// if (imageFoodData != null){ +// imageFood.clear(); +// for(ImageFood imageFoodTemp: imageFoodData){ +// imageFood.add(imageFoodTemp.getImageUrl()); +// } +// } +// +// getFoodById(foodId); +// } +// +// @Override +// public void onFailure(Call> call, Throwable t) { +// Toast.makeText(FoodDetailActivity.this, "Lỗi Image" + t, Toast.LENGTH_SHORT).show(); +// } +// }); } diff --git a/app/src/main/java/com/capstone/foodify/Activity/ShopDetailActivity.java b/app/src/main/java/com/capstone/foodify/Activity/ShopDetailActivity.java index baf7ceb..77b5528 100644 --- a/app/src/main/java/com/capstone/foodify/Activity/ShopDetailActivity.java +++ b/app/src/main/java/com/capstone/foodify/Activity/ShopDetailActivity.java @@ -40,9 +40,9 @@ public class ShopDetailActivity extends AppCompatActivity { //Init temp data Picasso.get().load("https://firebasestorage.googleapis.com/v0/b/foodify-55954.appspot.com/o/Free%20Food%20Advertising%20Banner%20Template.jpg?alt=media&token=8b836fd7-f18f-46c6-a14f-27680e51a1d5").into(imageShop); - for(int i = 1; i <= 10; i++){ - listFood.add(new Food("https://images.unsplash.com/photo-1546069901-ba9599a7e63c?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxleHBsb3JlLWZlZWR8MXx8fGVufDB8fHx8&w=1000&q=80", "Food " + i, "50.000đ")); - } +// for(int i = 1; i <= 10; i++){ +// listFood.add(new Food("https://images.unsplash.com/photo-1546069901-ba9599a7e63c?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxleHBsb3JlLWZlZWR8MXx8fGVufDB8fHx8&w=1000&q=80", "Food " + i, "50.000đ")); +// } LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); recycler_view_food_shop.setLayoutManager(linearLayoutManager); diff --git a/app/src/main/java/com/capstone/foodify/Fragment/HomeFragment.java b/app/src/main/java/com/capstone/foodify/Fragment/HomeFragment.java index 862c21c..6869a0a 100644 --- a/app/src/main/java/com/capstone/foodify/Fragment/HomeFragment.java +++ b/app/src/main/java/com/capstone/foodify/Fragment/HomeFragment.java @@ -17,6 +17,8 @@ import com.capstone.foodify.Common; import com.capstone.foodify.Model.Food.Food; import com.capstone.foodify.Model.Menu.Menu; import com.capstone.foodify.Model.Menu.MenuAdapter; +import com.capstone.foodify.Model.Response.Foods; +import com.capstone.foodify.Model.Response.Shops; import com.capstone.foodify.Model.Shop.Shop; import com.capstone.foodify.Model.Shop.ShopAdapter; import com.capstone.foodify.R; @@ -39,7 +41,9 @@ import retrofit2.Response; public class HomeFragment extends Fragment { public static List listFood = new ArrayList<>(); - private static List drinkFood = new ArrayList<>(); + private static List recentFood = new ArrayList<>(); + + private static List shopList = new ArrayList<>(); private ImageSlider imageSlider; @@ -61,7 +65,7 @@ public class HomeFragment extends Fragment { shopAdapter = new ShopAdapter(getContext()); - if(listFood.isEmpty() || drinkFood.isEmpty()){ + if(listFood.isEmpty() || recentFood.isEmpty()){ getListFood(); } else { menuAdapter.setData(getListMenu()); @@ -81,16 +85,8 @@ public class HomeFragment extends Fragment { imageSlider.setImageList(slideModels, ScaleTypes.FIT); - //Restaurant - List shopList = new ArrayList<>(); - shopList.add(new Shop(R.drawable.burgerking)); - shopList.add(new Shop(R.drawable.dominopizza)); - shopList.add(new Shop(R.drawable.mcdonals)); - shopList.add(new Shop(R.drawable.pizzahut)); - shopList.add(new Shop(R.drawable.subway)); - - shopAdapter.setData(shopList); - recyclerView_restaurant.setAdapter(shopAdapter); + //Get list shop + getListShop(); // Inflate the layout for this fragment return view; @@ -100,54 +96,88 @@ public class HomeFragment extends Fragment { List listMenu = new ArrayList<>(); listMenu.add(new Menu("Recommend Food", listFood)); - listMenu.add(new Menu("Popular Food", drinkFood)); + listMenu.add(new Menu("Popular Food", recentFood)); return listMenu; } private void getListFood() { - FoodApi.apiService.bestFoodResponse().enqueue(new Callback>() { + FoodApi.apiService.recommendFood().enqueue(new Callback() { @Override - public void onResponse(Call> call, Response> response) { - List foodData = response.body(); + public void onResponse(Call call, Response response) { + Foods foodResponse = response.body(); - if(foodData != null) - listFood.addAll(foodData); + //Check null data + if(foodResponse == null) + return; - drinkListFood(); + listFood = foodResponse.getProducts(); + + + recentFood(); } @Override - public void onFailure(Call> call, Throwable t) { + public void onFailure(Call call, Throwable t) { //Check internet connection - if(getContext() != null){ - if(Common.checkInternetConnection(getContext())){ - //Has internet connection - Toast.makeText(getContext(), "Error: " + t, Toast.LENGTH_SHORT).show(); - } else { - //No internet, show notification - Common.showErrorInternetConnectionNotification(getActivity()); - } + if(Common.checkInternetConnection(getContext())){ + //Has internet connection + Toast.makeText(getContext(), "Error: " + t, Toast.LENGTH_SHORT).show(); + } else { + //No internet, show notification + Common.showErrorInternetConnectionNotification(getActivity()); } } }); } - private void drinkListFood() { - FoodApi.apiService.drinksFoodResponse().enqueue(new Callback>() { + private void recentFood() { + FoodApi.apiService.recentFood().enqueue(new Callback() { @Override - public void onResponse(Call> call, Response> response) { - List foodData = response.body(); + public void onResponse(Call call, Response response) { + Foods foodResponse = response.body(); - if(foodData != null) - drinkFood.addAll(foodData); + //Check null data + if(foodResponse == null) + return; + + recentFood = foodResponse.getProducts(); menuAdapter.setData(getListMenu()); rcvMenu.setAdapter(menuAdapter); } @Override - public void onFailure(Call> call, Throwable t) { + public void onFailure(Call call, Throwable t) { + //Check internet connection + if(Common.checkInternetConnection(getContext())){ + //Has internet connection + Toast.makeText(getContext(), "Error: " + t, Toast.LENGTH_SHORT).show(); + } else { + //No internet, show notification + Common.showErrorInternetConnectionNotification(getActivity()); + } + } + }); + } + + private void getListShop(){ + FoodApi.apiService.allShops().enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + Shops shopData = response.body(); + + if(shopData == null) + return; + + shopList = shopData.getShops(); + + shopAdapter.setData(shopList); + recyclerView_restaurant.setAdapter(shopAdapter); + } + + @Override + public void onFailure(Call call, Throwable t) { //Check internet connection if(Common.checkInternetConnection(getContext())){ //Has internet connection diff --git a/app/src/main/java/com/capstone/foodify/Fragment/SearchFragment.java b/app/src/main/java/com/capstone/foodify/Fragment/SearchFragment.java index 8850b39..707ef9d 100644 --- a/app/src/main/java/com/capstone/foodify/Fragment/SearchFragment.java +++ b/app/src/main/java/com/capstone/foodify/Fragment/SearchFragment.java @@ -135,7 +135,7 @@ public class SearchFragment extends Fragment { } private void getListFoodBySearch(String query, int page) { - FoodApi.apiService.listFood(query, page, LIMIT).enqueue(new Callback>() { + FoodApi.apiService.listFood(query, page, LIMIT, "id", "asc").enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { loadFoodAdapter(response); diff --git a/app/src/main/java/com/capstone/foodify/Model/Food/Food.java b/app/src/main/java/com/capstone/foodify/Model/Food/Food.java index f20e54e..85e5526 100644 --- a/app/src/main/java/com/capstone/foodify/Model/Food/Food.java +++ b/app/src/main/java/com/capstone/foodify/Model/Food/Food.java @@ -1,86 +1,112 @@ package com.capstone.foodify.Model.Food; +import com.capstone.foodify.Model.Category.Category; +import com.capstone.foodify.Model.Image; +import com.capstone.foodify.Model.Shop.Shop; + +import java.util.List; + public class Food implements Comparable{ private String id; - private String img; private String name; - private String price; - private String discount; private String description; - private String shopName; + private boolean isEnabled; + private float discountPercent; + private float cost; + private float averageRating; private String reviewCount; - private String quantity_sold; + private Shop shop; + private List categories; + private List images; public Food() { } - public Food(String id, String img, String name, String price, String shopName) { - this.id = id; - this.img = img; - this.name = name; - this.price = price; - this.shopName = shopName; - } - - public Food(String img, String name, String price) { - this.img = img; - this.name = name; - this.price = price; - } public String getId() { return id; } + public void setId(String id) { this.id = id; } - public String getImg() { - return img; - } - public void setImg(String img) { - this.img = img; - } + public String getName() { return name; } + public void setName(String name) { this.name = name; } - public String getPrice() { - return price; - } - public void setPrice(String price) { - this.price = price; - } - public String getDiscount() { - return discount; - } - public void setDiscount(String discount) { - this.discount = discount; - } + public String getDescription() { return description; } + public void setDescription(String description) { this.description = description; } - public String getShopName() { - return shopName; + + public boolean isEnabled() { + return isEnabled; } - public void setShopName(String shopName) { - this.shopName = shopName; + + public void setEnabled(boolean enabled) { + isEnabled = enabled; } + + public float getDiscountPercent() { + return discountPercent; + } + + public void setDiscountPercent(float discountPercent) { + this.discountPercent = discountPercent; + } + + public float getCost() { + return cost; + } + + public void setCost(float cost) { + this.cost = cost; + } + + public float getAverageRating() { + return averageRating; + } + + public void setAverageRating(float averageRating) { + this.averageRating = averageRating; + } + public String getReviewCount() { return reviewCount; } + public void setReviewCount(String reviewCount) { this.reviewCount = reviewCount; } - public String getQuantity_sold() { - return quantity_sold; + public Shop getShop() { + return shop; } - public void setQuantity_sold(String quantity_sold) { - this.quantity_sold = quantity_sold; + public void setShop(Shop shop) { + this.shop = shop; + } + + public List getCategories() { + return categories; + } + + public void setCategories(List categories) { + this.categories = categories; + } + + public List getImages() { + return images; + } + + public void setImages(List images) { + this.images = images; } @Override diff --git a/app/src/main/java/com/capstone/foodify/Model/Food/FoodAdapter.java b/app/src/main/java/com/capstone/foodify/Model/Food/FoodAdapter.java index d477285..1460d9b 100644 --- a/app/src/main/java/com/capstone/foodify/Model/Food/FoodAdapter.java +++ b/app/src/main/java/com/capstone/foodify/Model/Food/FoodAdapter.java @@ -55,8 +55,24 @@ public class FoodAdapter extends RecyclerView.Adapter 0){ + + //Calculate final cost when apply discountPercent + cost = food.getCost() - (food.getCost() * food.getDiscountPercent()/100); + + //Show discountPercent value on screen + holder.discount.setVisibility(View.VISIBLE); + holder.discount.setText("-" + food.getDiscountPercent()+ "%"); + } else { + cost = food.getCost(); + } + + holder.price.setText(Common.changeCurrencyUnit(cost)); + holder.itemView.setOnClickListener(new View.OnClickListener() { @Override @@ -80,7 +96,7 @@ public class FoodAdapter extends RecyclerView.Adapter products; + private Page page; + + public List getProducts() { + return products; + } + + public void setProducts(List products) { + this.products = products; + } + + public Page getPage() { + return page; + } + + public void setPage(Page page) { + this.page = page; + } +} diff --git a/app/src/main/java/com/capstone/foodify/Model/Response/Shops.java b/app/src/main/java/com/capstone/foodify/Model/Response/Shops.java new file mode 100644 index 0000000..9836411 --- /dev/null +++ b/app/src/main/java/com/capstone/foodify/Model/Response/Shops.java @@ -0,0 +1,27 @@ +package com.capstone.foodify.Model.Response; + +import com.capstone.foodify.Model.Page; +import com.capstone.foodify.Model.Shop.Shop; + +import java.util.List; + +public class Shops { + private List shops; + private Page page; + + public List getShops() { + return shops; + } + + public void setShops(List shops) { + this.shops = shops; + } + + public Page getPage() { + return page; + } + + public void setPage(Page page) { + this.page = page; + } +} diff --git a/app/src/main/java/com/capstone/foodify/Model/Shop/Shop.java b/app/src/main/java/com/capstone/foodify/Model/Shop/Shop.java index 6002599..d2ac269 100644 --- a/app/src/main/java/com/capstone/foodify/Model/Shop/Shop.java +++ b/app/src/main/java/com/capstone/foodify/Model/Shop/Shop.java @@ -1,17 +1,58 @@ package com.capstone.foodify.Model.Shop; public class Shop { - private int resourceId; + private int id; + private String description; + private String imageUrl; + private boolean isEnabled; + private boolean isStudent; + private int userId; - public Shop(int resourceId) { - this.resourceId = resourceId; + public int getId() { + return id; } - public int getResourceId() { - return resourceId; + public void setId(int id) { + this.id = id; } - public void setResourceId(int resourceId) { - this.resourceId = resourceId; + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public boolean isEnabled() { + return isEnabled; + } + + public void setEnabled(boolean enabled) { + isEnabled = enabled; + } + + public boolean isStudent() { + return isStudent; + } + + public void setStudent(boolean student) { + isStudent = student; + } + + public int getUserId() { + return userId; + } + + public void setUserId(int userId) { + this.userId = userId; } } diff --git a/app/src/main/java/com/capstone/foodify/Model/Shop/ShopAdapter.java b/app/src/main/java/com/capstone/foodify/Model/Shop/ShopAdapter.java index 05cdcbc..676babe 100644 --- a/app/src/main/java/com/capstone/foodify/Model/Shop/ShopAdapter.java +++ b/app/src/main/java/com/capstone/foodify/Model/Shop/ShopAdapter.java @@ -6,12 +6,14 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; +import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.capstone.foodify.Activity.ShopDetailActivity; import com.capstone.foodify.R; +import com.squareup.picasso.Picasso; import java.util.List; @@ -44,7 +46,10 @@ public class ShopAdapter extends RecyclerView.AdapterSA^tPMb?Cxzd|G5iUv#A?FzyJ6B-|tJlJ9p01GiS~@bLK7p|Hc1rK=3C4 zV+^OPJ7fC!29?(S!A=#v zO2Pjz+%g9ApTE0jc46g0ry$>}<>+e$Ewh?2QX8+mH_6sgJylZb#Jzs{&%#YJpxeBC z5rxI2%N=fMieAHJX&`*P`140LH=Kw%IdCK)5@_%+S+FJ15cN|O)Rh8?7O*BaK%x^s z#(~FgU zZZUor1G>)mETll<*SIBRB1glFL{re1%#X(T>~DNDYM26~mx1gU3$U93Z2{yYnlXL= zB1XTbl&3xf1j_=_VjSc`H;I%yPdmt(3vLnG%z(frzf6QOb+}fL&0z-a*s|ZJn6N-3Rp5DQ9mE*}lE5v1-wfzFXIs~@T35O#A)}6kv&z;_`Jg@>pXfXaxe9h;O{Z6gA{!5| zs}HydK*$P+ja-Wg|2|6r#n~9uMyTBY$SOox+GXcuGq?rtYYS+meVItQP9<79R;OW> z*fvakqdr|a)prQ2y>OV;wZB_&7tREVZ9KSn5Sz#l%fRPhpqzkEmq{5qoB%dm1{`t7 z?JY#Ci~YVSrs~W25t^h9?ucDqWVfM@)){c`f`g&^uI8OoFleXam^HR9ratR4%7dB& zMBy_CYCmBZ#;ynz?}Oh1ioy_4#gJG61u|zDzQaKfG9(=)t@4;ab)u!OEYsorN8_cd zSv|P!-OJ^x*>kW<=!*n7j1&MK3uDxMjb`2VKZ%PLx&7(3Rqgz1W#vEA$N_f{G66r)ECV{v-kM;kv@cZCG(~-Mb;aaMjpid)FT#+wxU_wb z>)bzVY2@OlP7$Te1Blv%+0gCG;Dr4U9wJLzONbTTVwR4hrlZ`VC5pW=)-z2Y68C{r z7vwnTmSnZB>l2mO26S+^ zrWJJ@nMhv$U6)U3`Ni03AEHVKrO_^oJiqG%@DoikAa+Jdhcc)0c{Od|>5cp6O{i>G z21(T(8&4)~f{Jq%paV`q47Z8K+cs&FkL6u2bp%uoo)GW2VtKegksre6ul1D?_AF{) z)ZoqK+m6m~PJZ@HaAWe2W!{Q?b>_Qp(bG;M>=3M5%UI^FebCd7jG&xfveHuyz%)SD zTMS7Way>rJ^t;+8n^gYj-{Npb&ifppLbUy2FS-^KPGb56VmKf zN;`NH?7OGm(>nH0`mi)gyle#$9X!_@-E;KH26lpbZqFGilt()hi1?m zqM||`k}GOPQzA;HARdc3_974^9U?jak_^DH>uIAdgH_}$B2AB0%557w?Zij!L}s?fG|mzW=%{5Rkya7}FhY3#-8y;4?CZoj~fx`TG^ zJXAw0R{(ap$LAS(rBQk16wyp~6hNqps|}QZnu3 zFVOLG59DjQttklU-`^5BxC@b(s(elNb5wxwXWYBXM)RJ}tNdmFX0X?X4-4S;sR>5E<&A_QI7>#Nl5+ z^xJYmgG50NMlQjl$ACe~yLd=_7AlgCD65{HNpQ>|*fTi{@T}xv zm>}7Kzu-6l8UpSFG`!-eE2H?@(z3rNO24jP6Qk~-blf_q;r<1U+7%!nW=x#*^vLM+ zJr>GrvPnCBo>Uw&WJFz41;*sLN=ao(-Q=4ELIXf6@R0z9p_4^bX_3f7pt15&d7}n# zwUT==kZb`~RW>j(WDRh-@AS~r&2om!O%&>v_lf1jRiqV_^q)9Jym0AffM5b3dl(Ss zI_f_MRNsAK%YO z-<+}ly0{|No2S?0)}^tcTvVTt>6>%R&pgrHJf=@*Tv__6f-d(a6?GXK->@S`R^=mg zldnVJ@JB*Xwq>DDL1Hnegvhz(S0{wT*)zJt+cUbweK|ik=*dUJ<10?C0Ik3)0h`kb z66?~Ef-FrHCKfgtBCMYHl86aQpgAR#h|R$pG-%&tEd0f}U@#4irb$!ta>LNEBz=_QJh{E&Nf|++IabPKd^OH~c3yq5W#x}c zmHg5lfX$iWJazu(vQJVB*ySD$+5lp5HA=a46LB098+J}ir{t4^vF9vdEk)tXP+6o0FDAvXyb(&{$d@>|?Tv5MCw-aWe7pMB25XFcb0q7x|L zTHbo!(SjUc3Oo<|1Ex5-qP0Q_LWg}aWQCJ2UfGwY?{T=m*ee57)qL$k=QXYN|C<$% z81KP^2%B!k!d>AcX^GvxO;zy|R1;RP!0`$#!)Fzz`?`2??Dy&;-_Ua!a7)Sc=7Z^w zkhv5HaRUFKy1svfHpd!b7MqRtYp33|&b5Be6F`!@egko#?LyEB zyb{nOD6o*B;EmCc21L}qQE8%Saoyx^pm@yVVNgPE`!ve2-^7+2`!{F<#Pae?s$=Z4 zB%)z$u1xsq4@#KGkkQ2BD{HYanmS8`o5m)B%ekNxcp0#H(Fh0eN4(nfO0m_iYb|u< z;!*3Bcic#ixv3UsdNxMi*zOF~|Apf5A)3wL00xnpQ2U z@eox%b=g6Gd-gShdY<~ZE-i?tYuD#eBJ0zU)L^HHQZH~L$mwY;z;LzXjj11l-vK%{ zgsV%(+kTl#>2<5>^f}b?>Dr#%_B5=6&%LaVdiaxRffGMmf{q%F;3JypppEchKx`<# z6+*8bfR&;=t3j8bC7>EdQuv(JZ-O?0oa8E8Tu?#%Jaf&N7n$B2hj8tq`#Ba|b7%ap^~GfGw36|B_050LYIatGmaj-a`?`4SAsCLWI#)1gaY z*E1d^US@TD=$24eQC0052eZo08mE8#L`q5~=NAJUlIv@lro3SUnl^VAMqQeO&;p$f#4M`;UIbSKb;uDd98YYu=%3nm?Gok_q$3&S+(;kf}JF^#Orf~Q~%tP{F z<7X&UU!=J54q(|f2P0Q9;YicBS8TveIPlU5PQLUmVMPUFN?xaC-}chx$xcD;R98$v zIMFT1pU>X+>oLC=VBPq*)u?5?H>+-0i7fz*nV=cO+fHAjW5Y+0z(kEN2S`|{#u4NB zXe!8%!Nf*9sgH^s679~&gUep2joaC`mRznpAg3C>RVp7XQCx+a3D;&|>W@9|oxC5N=q+kn8KZce_(wIAP_9 zSkMeq+sv3_Mvz!xy~8@rf$gJrX+{s~7+-lRIVSJW=OI`7JMi)LW0WJoWYSAYfMEHa zD6mI}c?kw>0D_tqH8eS!y0TY7M!S$1cyYU$zhLvJkH|SDp<#KJhO$j^H5nahQoN2Y zxv$Xl*f*ZDD~ZkF%rVTO#suHcUVc{Yh)av&mDJ#Q=&125<;*&ZrJ5IR zcJh!ltpWPpsfdwMiF2@nR%Uzd86u{AnV3~-|5*L1rePi8-RBMJXI|A@o6R!7@{iF~ zF(&P_rm5ukXVjk8b`D?Kh;k~ilafY6ynGAM-qlO6Z0`XYTfVk}bf{kmWOoi_KfRq| z0@pLc9WTHUi{w!s>NCAesoNWAf5la@0E^Y+Y6`VzfBl8}{Q=N*-$PO0F0vV)QrLi@a7eYs zY))K$EF|q*X)4jTiA~kja@67@i^gtisr^-*^1 zuqVI$8aH90XsCIOaOx1a6@a99T8Dt^N?*hTeM5!b--{bkc}gX-xJ)tM2~!lp1- zeibOzZk~@F+6?vc8r^BK??0y~ZWA1sqp8e?~ z1+Df1{6y01@4FOM)TT>{;&TJ6Who~)MlV~l{?WygAXFOG6VlpuV-)LHjD>pumU;s$ z8k$m8Bqm49E>i(0<9UdkTPVKoZa5&-Cj@ryf*rb(h4$GFm%K$ma39OrH}i& z$8&)nXw%9h&;7B>rJ}06MBy~@31|xDMCdecf3R-S7fmsu4mhJ%km#(8S@Y4qR_(0z78jnr2~F~IBGRfM&0z>wG+34--(<4$&BW) z4GBhuf79v^A5*_y1AhWYH<+yYmr=o*x#yQnC<8ZvTQ=aR8Q*mgv9j3iQXa$r{UMAX zD=r#%=EpuALKp0P{q9@xgNa){&_Lps>$LpiwSqLmCCbs@7C_6=MOvQwxP5fc=f@V^ zeN!vm5Pzu1wwsyKotVe*mP*$Mj)uLRB8lk0mb)aYteVtP4NYZoJi9kJ*0AfR`C~Kx zsGrmQX+ND+F=pk7fb5*&&UQfv5?zWmK+hW$#q(`|ThCEew}1+Ib_^@s_R;K=omF{$H_jIR&Z|2?Jz1@Ac-}nCifB$>C ztAdjd1R;?&2~>DHluEF%bO)-blu#+6a*fIWJ=h_*N(gEwS$Hyg+!6ArEI?NvJORDl^5BtB{kPph!?DwXpw|mdU=x%=Fqr&F z!NX`NC>BabPZvsJM^PCm=+KmxB^`Ti^k7N9TO2<~{k-sW%fP)-@1 zP~Rx)JauRY!n5Cn@91Ieb^4kb)bITls@~u1IO4Mid;cxw8DdPZ9vDM82sY3cKez#A zq&f?raiMZFhX1i?75Ve&6+JB`BX z22?e)VD+3=crU8f{24-Xv#honzC4B=znuq7WQ5iIO=mBnHSaFuLK7W@$UU2(=@n(M z&t(?C&65a;9h~O^G<72dhgLZa zQ_uB;|IA;)d&oe_>Kf5_>?|73eFMlGQKX*tinW>Q=({9veWZMbS)1MeZH~|3qCt zkKB_@^M^sQj#n%|d$cF=Q)QBuz#^+GJ!F2zloXnm~EmY(pIyjEE1{68V1UD!go6q(q)4HutI;+V^==QZg&P zH|7tILtI1v%4(YM&)gDhqa>%rP7sR<@WGsfz8KaoTx|PtQ3XD^REU}ugRlbCE!^`B zO{QwGdfqIqKvl*jnn1OfwZj$?v2`7MhP!4h*Jdir zagoy$=km+(()QD6wxYpvy@K)i!ZC;m3oxrM(bZ$x_A|Iu*x4<9Hr69H&_%SwcwqO3@wEL_Tu&W>=CIVc`OgDOH`e-Q4WO1BvtN zWcDgMIr$~JUEzp|I3VAWI$?>$esvjZ{qLtee1cqxc#`sYC}3&|N9dKE`6sMak;b#hi=#w?lA4k zePI4)|KodcVO zass~TdA^_mumAl#ZkAhSZ#>Gg6>$6*M8lypg0NNWyHbp0pI@e-v%^A|{Gr7!;1@CB z=mzLG58yTEXRYmJavM+F!dmLtR>5osA}O(9QWZ36+^=agtlHQC5068724k=&0$E0} zmV#}a*-B5J9)8%pU=)V;>lX5it1Q3)`ZCkj5e5NU6xy?glL$g=Tn_xVov zf@46Ay(8FUS5Z9RB*#nfBYE<`>g${yz9@{wR!lCK4V5KQ3D!UcK?T zSy@&fA%*VrtW6p!E{rI_6GHwICeL3?AC_h-;0Goh&t6QR#1i^adi(Lb5uPSrKxKj? zK>Jl2tw8Zz3egg#IJShoLB2S&WSpnTGtwpU46|-CK1Z*}6&MB)hS(IrKz=-a9Obcq zCn1YC?li5i^~wxCI-3ZEV0U#EmXuU@@6x?3S8 zMAX7R3pvT}B2LZObU5hc)Rj$ZIjvGkwd22rE8Wbgl~WHLd317G$tjI;Lte$(X!5X< z%4G;v^avf9EgnWEr`u5qG`U*c#LLC%s0;lVB`IQ$Wz%R=kxE_#g{Z5nsQ3kZ_HPG%4f&FWM)C|7VWpGY@0;=vzM2C>s^$zHt z_qffz<)*3unl6Ad=P9U$b5RDSiWlSzApQOh#Dos@A@k=wK=*t8lgUP?Q(uBJ^G?`8 zV}qc-9s})o!++ALVtvoSnf(Y#q?HY@JZAuD{WM}gnPFr)ZUFXunU`^EDH@iOorc?kuR; zkL3#uu199`3kH3MSl@kled6ZxR=9e{^;I3u`W~L3ZyoD<5hdVyKpHWiJ)Zyv){Gyk zY1cs2&iCb0Gw;pd&A6zLY)S0>8f553yG@{c+=)*^>VWw2-cTuf;!>0ykK-68}(Jh zq*)9Qc^ixRe)7ip-0>84&G7)`M;&veUVhu_THmF8UjYNZucJv({wT4bd52;nsGD#nUWWb?m=efTX}t3+VuR57eS?_8TDb>b$rp< z{P9p1sQV+tA+iBzv|W)fbGmGVFD~@6Gimk~)?R5I)y;8qU@QJimz34I&wUG9y6WcbZJb zdMFiMxcPDvZa`7@$3Xv&dcOLz^>|^TX^A_<*7Ws#kElfR0Ezx1JN1h;gtxvRlNj)9 zPNR2~J44j+)h&RPzEm@)W}bd8dp?!Fh(a_E==IONgC;9REMf(k7Q+^&{v2H}ycM+n z7epbN0VDtxpsHrW7FFm0fqBxfre>~BM1A24u8CM1!0rG0J9MG+!MZbGO=w<~UqM=+ zYESdYX#ZM7!QKNzal!D1>bX3|+fO7_)d|HjRL$i0Hv`tlG`o=g)rf+<2k=U+5LIpO z{w{U%i=VGK1<~{cY_$#i9%*r8?*WCwl@O)1kc|NLRgrD=;`$7pld;<% z4fg=q2G2d_)=I`SfT;`E>;ncBbEasI-o~+fXetIM9xj6dpnK&MVqvPNN+33gTEA>; z2p05O7@$8`9@_&9hI2|VKu|my>xTthVu0d%NSQ(Vi&|kC>S8^m%NF%_E3$h?(!~pO zv~#-Am__yigNWM&WCl4a;8mI0`G}2^^vg0?oQgC;$p7i8v_kukMQvf9ynxVn9*z{8 zxyyOxw?h{uLW6X>{K>s0C%Y6qIJ%J6W!+H#+4pAKaP;t&R9^lw@nvc80@+14Twi|u zUv$CyctU>j(Ie{x%Tf8X<|;2};WPUleI<8=Hm>8_69uMEX5=w&3o47XTzTKCC#L!5 zO$eJJPcGUyEe$#mXaM&;de2&w&>h6>1HTxvLcSv+?<2&?hJ5V#FvSW<% z@`m;DLU}`U(vgR>_%e!E@fiEiu7Fx`ElW{ATaAjfwH0C&@zYvdQ4~>Y zL0dmd09mvMK~@oxud`PWRv)D(9cN?qF-!yZ{{S|WL&;E<*8U@!0M^2^ z>iYH2e%uCa+ji&&5An_7pDfEz&h7!nIp@H6;Xo*TXj~)-DI%YQ zFtKJu#FeP?W9VxR(f}jihxXlCg#No4!KF)K96pM4z|pk}oR$0CgZrc_qU?K@2 zKm5ZIfMG5hi>c(I9#DVy0iiFyLh$o1V3b!Rb*@CJ@95DTsHlWiTtq?)#%L_Tb@i3- z+;KYz;&dbdwga8R_MoN!c;v?*MW}1m!2i~}P}deBRX94H3GcKiaGcoz$jpSky$I^o zZ3un-IZdC9w&%#LTETPYXt=Ju21&r03PJ!?qhE{^pl#g>-%GQhuKT{ue-b^MquuFH zH*7-EP#jQt_JlI9KU~9x!SMSLcxNtxq+ND!U2_$@_m3kj%1-bGXvta-7C_RYZ>S;o z|NbTd@67{r-KuAGbkoBq11=ES5L&(x>i6qWU%0Lu4$s)pFe)nGd-)ZptJlL&Q#oeTe*H_fH929!R%ku~%AL{^GY5BZ zD$~bcBnWNSE|mXfg4KEPAg{a(sYMHvjlK*1H{NRS&NH~fC+L2muU8=Z&DY_+F46${ z=gvcD#fn5O)muS=9-qE{KguUfhH>zGNBe0lI717{(yeu2(3y#ih5o(plfjUKR?##9-acZaqa=%tA8U6I3SLdffpci z`je>m{S(&BPBwhAUxiApw)ehq`LAo%Yu>7onJ z)Sw?Yh`_uL;2d^2IZ!>U`q0X6V9?ZvhL{2fE?h(wf3G-pT`?SvE?vyEw}~R~!F=*j z%HbM$V|68IN1#fB?GRl66sodABS1cd=gu+0>hcAfDvU}W0{{37&Py&9fmIlxufB?U zPE-K|zy8`Xd_4M0TJXBt)S<3i15QqzVqscnNfnpHdUiR)gpQSZ@X}9Nak0JC83Dy((2;MZQ4LNzc0~TKY??= z0LZORtJ6km*A~XU{YVA+wjwA*p-JQu7)MMdiv0vT*b89iuIdICU5FsjTJ;5os_vUd z!FfS{NT;3}x4pApKMJlEA{B7VBJSC(8`LA;h+|>T3<}$&NTs)(0{Su2-{)w{aaLF8 zKi1FVld?0B`KM5%)S$}PDYDaITMgi~R9v8QF64IYpplbN zA9!xRHCf(H%wZ?l1D&QpXxTCmaH$)K7E6Fg)~nQBKD|xk9~>Xl3XW_A5M~OcoR;Q6 zc{x%AyU*?sBakX&vIXv&MvB70j{42F2ri1w5i*Pu$IXLUoi#MQP9DHk0Fv7yz8!6= zBp8dGjR8luvyk!V6gqGq9bf{~b@f%E=sS0c@HhCyzv?#h2gH};c1PCRkVLiuuvDjo zDM2Gi?@#G{9)+j3k)`j4hJxI&BQmBvLMs+&#kY}0+In6kvU|*4)rP$Qh@R%iN^-f8 z3>@9N!AqQ-(yuSl0fR^nkUF#R(us&+bJtkP!gLnDB~oGWFi{|7W*~!D8RyU;Nu{lLq>Mv{pzSE3)Y%s3hYwQ*>98<- z`iU|a$B!qLKCAsaRk=it4XP_?K)neHfWemA0$(tS0GM&fm@*ks>(+=0>V$sqAhgY! zp_S|uP8PeYOtTp&+Lu^hj#Au~6RzR9Q(D*#j{P!7R-a>Nxl<>z!b?-Z=Zm}vWo|eT zQ9C2Uez;z;Ll7xCxujYNjczezfXf=5EVXcoDFFSz0jtW2+tzV~S+&FKwzkI%h&V8* z4R$S?V&^4~o1)iVG!0A0h@P}8xkBhI0s)UmfX}ORWanH;riW0`QD6w*?0Ov)Hmv zJdjS}G@>Cc`R0G?ZK$hO38q!)(G5)%&VGG_`m>81T=1z`Nsf=FMxw+HEP&Ej4R|9$ z#Z!MEH}weR=3`&%WPx3A@03TxG4D+ZJ3#KAUkm5O7sWcYG_C+R3oJ53)1MJr)HwIv z)WADOID%!@I-DV99)fcjaZthnh`FnY_ulYcJ+<(A_$f)s8xK4qQztmm4cFyE$!MF; zhec(QE z%=?CTKN8RTjA;);KBGe-mnh^_U|qacZt84s`3m6<`(Jxq#M`WPoR{~#@+ujM#!r{A zif84|AdsFnOryrs7p9=f?!K48SCek?-0~}$4!;)l z<-dKz-1^!`;623IvtATLtDh30{#mm{y_Yo8o%r-DktC^ecp1!(*IH0ek3TB*?=g5f zRQ_d#h`qC3d;zZEm!mPjbX$wpW}BUVZ=UEpYhvazPbJfNMgf0>HGoI|SR!Yst5>5U zZ@NV`@Pl~9juC6Hw!H|x88e`6*o<_8`8?0)+u^?LRv5t`{516f3qBE3A@jLs;po(n zSfvdJE?Z7y&TVE;7aP1?wxs4(S$?r#0ulg+%N0`}C8DFms^k2D`^M|xymSx@T8;vr zEkfwK@2pK#^#L!x-tiAoo}#nZk?Nb7PxszISteqm9-9_v?U@ghVsC!&{sC4&GCrI-k9c6pCprgT0!PoDkV!rDz54}W;-5dCmZ<~2S%(~H5i%( z5LApccojsBAeY5bG%Zk})SgR^?S1WTcYL#i(!%b}Ec2$9`%7lhzWru*-hbZv-uJ%u z2C!qtj-CH85>AWE$Ah3VCPRjY0mcbK0R{$g{tHIqH&|6rYR%NT02$*qK*FSvFO*|w z!a#~NEXz-`WFWJ6X~wuMv1{fy?M^GlpT%pv0u>%H}pXOvBOceln z7|o7gQVdc;-2!kiaX(&)jE9&ES^-!*6eF;IW;)U)ErwY1Yg6}k@q&-52fUr#A(vSH zX?G`8&)=ISy^aaKWANH<+fdb33z~>309%Qdqh@1z@Fc|gMZ-(sjt6B{=oFku$UD6;AK;6^??D6V0<4Hh#J0(ALM3;B z7^oawu{$mm!76`jI{z67SA;=TfcK}a!s>C!=npndTm(N?PvRHSAp~lpz}DC${Z@IF zgT+U%=JbaU3Y8WxJ8UXa$rI@h7>2>dbDv_z#VpW(iU1kY)}lYC>u5yMk+<+`*#*!- zumI17Oh&ldNZ$61T`kDDaRS$y%F)!-3L|6QjctEoDb&4Ufg)`Qo;$n(rOj2KiC_Wd zjf&%KyFG6YcI0KD-O$Nt%leZ$0%R8*#`04;(V}k$Z3GK2)+>USUCP-^oBOSiF=G9h zkFhgbEm(lc)*6g<54LJE)^qfI zW$y;oVz!%YPVH@t8Y$IYg2Uh52#y4gSLAWp#CS*G>A(qn%9fS;AiLfTwy?pk0lA|p z;Uc9cfnWi?x^|S8-9D1ocvv0U^M9#Mj#tZk5mp$AEFy%C;g^G*p=w8Vum-dcEWpXi zi#S_-nbR&%>5anVLr9Nh1Dv~0o)uyt5hAiE#3TeC64b3&?%fC)P?-!ZJ@F1Y4PBge zQi&8P6BnQ$>7Xgl@o`c2e0E2OIVAyT?B>3$&HnXplNlit^Q%7b0SV+h20YQU*ONnw zx#3UpvLE53#Ejs{cqM8s0!YiaqP^KOQWSSNqOj8mN$M7>-{DOBz(2&+hLNEVxtee9 zEu=Ob-cy)^7k^%d8X^W?*xcaCm?Ru~;qyM_KQ_7IGLMSIDLWt(stJ)p*N-8urU;9p z=RqOkzp!zIOmyz$&vqv~=4`!Njd$UmQ*c2&CC1LyHjwze&yPsRdNpI)N*kXQStSJ@ zAo{vMn4=z9LAPKlqpU`Ww`uPdzI-XF0MC#y`;W+SL?{e4T^FV3!W38T=3TBAzHLD? z0oM6yafC!|UJl(hUB~w8UmoI@^f=$9fKaIW09UCI9|hH7fk$&snUa)EbTRMH*hZ`- zB88K#^1OSisnzgp*xxlNArz_tgpf-75MG67=f3@S4Dsd{BFjLNOJtbLZx=p0q$U8{ zXAhCe``g&$AC&c#UZ4RLAF#@&0VhXS^jqb3)v9r{h0e;8;1;mfw*l`3)SYK7jsz#ii9-x^yc_+o5!>$C5f-mwE2k%?M$(#U$WcIsw^E(uTgz!wn&O5k zz3|(o9thneiH#}6LD(B|3vsI3NzW=$nexT}m+TqC28J=cJz@s)0<5|8FBzOSW4K^swpx01#&Yg4xB4{V{Us#ing$Hn zcLzwnH>P4`fyKRa+!bTr9${agfH9glk^$dF&ky3n8Oc@1W&5x+uN-#l*s){BJpTdK WKLD+TSCaGq0000 - - + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_food.xml b/app/src/main/res/layout/item_food.xml index be79439..578d135 100644 --- a/app/src/main/res/layout/item_food.xml +++ b/app/src/main/res/layout/item_food.xml @@ -1,7 +1,7 @@ @@ -64,11 +64,13 @@ android:layout_height="match_parent" /> - - + + \ No newline at end of file