From 05871d7006960e5789139d4a3e8f7f66d0e753ed Mon Sep 17 00:00:00 2001
From: Nezumi <123229563+Nez27@users.noreply.github.com>
Date: Wed, 8 Mar 2023 11:30:45 +0700
Subject: [PATCH] Add shop detail screen
---
app/src/main/AndroidManifest.xml | 3 +
.../foodify/Activity/FoodDetailActivity.java | 8 +
.../foodify/Activity/ShopDetailActivity.java | 64 ++++++++
.../foodify/Fragment/SearchFragment.java | 2 -
.../com/capstone/foodify/Model/Food/Food.java | 15 ++
.../foodify/Model/Food/FoodAdapter.java | 5 +-
.../foodify/Model/Food/FoodSearchAdapter.java | 4 +-
.../foodify/Model/Food/FoodShopAdapter.java | 71 +++++++++
.../foodify/Model/Shop/ShopAdapter.java | 11 +-
.../main/res/layout/activity_shop_detail.xml | 142 ++++++++++++++++++
app/src/main/res/layout/fragment_home.xml | 4 +-
app/src/main/res/layout/fragment_search.xml | 2 +-
.../layout/{list_foods.xml => item_food.xml} | 0
..._foods_search.xml => item_food_search.xml} | 0
app/src/main/res/layout/item_food_shop.xml | 134 +++++++++++++++++
.../{list_restaurant.xml => item_shop.xml} | 0
app/src/main/res/layout/menu.xml | 2 +-
app/src/main/res/values/colors.xml | 1 +
app/src/main/res/values/themes.xml | 9 +-
19 files changed, 460 insertions(+), 17 deletions(-)
create mode 100644 app/src/main/java/com/capstone/foodify/Activity/ShopDetailActivity.java
create mode 100644 app/src/main/java/com/capstone/foodify/Model/Food/FoodShopAdapter.java
create mode 100644 app/src/main/res/layout/activity_shop_detail.xml
rename app/src/main/res/layout/{list_foods.xml => item_food.xml} (100%)
rename app/src/main/res/layout/{list_foods_search.xml => item_food_search.xml} (100%)
create mode 100644 app/src/main/res/layout/item_food_shop.xml
rename app/src/main/res/layout/{list_restaurant.xml => item_shop.xml} (100%)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 51b2a20..2b8add7 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -15,6 +15,9 @@
android:theme="@style/Theme.Foodify"
tools:replace="android:theme"
tools:targetApi="31">
+
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 c96c87e..5c0c0bf 100644
--- a/app/src/main/java/com/capstone/foodify/Activity/FoodDetailActivity.java
+++ b/app/src/main/java/com/capstone/foodify/Activity/FoodDetailActivity.java
@@ -188,6 +188,14 @@ public class FoodDetailActivity extends AppCompatActivity {
}
}
});
+
+ //Move to shop detail screen when onClick
+ shopName_txt.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ startActivity(new Intent(FoodDetailActivity.this, ShopDetailActivity.class));
+ }
+ });
}
private Basket getFoodExistInBasket(String foodId){
diff --git a/app/src/main/java/com/capstone/foodify/Activity/ShopDetailActivity.java b/app/src/main/java/com/capstone/foodify/Activity/ShopDetailActivity.java
new file mode 100644
index 0000000..baf7ceb
--- /dev/null
+++ b/app/src/main/java/com/capstone/foodify/Activity/ShopDetailActivity.java
@@ -0,0 +1,64 @@
+package com.capstone.foodify.Activity;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.DividerItemDecoration;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import android.os.Bundle;
+import android.view.View;
+import android.widget.ImageView;
+
+import com.capstone.foodify.Model.Food.Food;
+import com.capstone.foodify.Model.Food.FoodFavoriteAdapter;
+import com.capstone.foodify.Model.Food.FoodShopAdapter;
+import com.capstone.foodify.R;
+import com.google.android.material.appbar.CollapsingToolbarLayout;
+import com.squareup.picasso.Picasso;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ShopDetailActivity extends AppCompatActivity {
+
+ private List listFood = new ArrayList<>();
+ ImageView imageShop, back_image;
+ RecyclerView recycler_view_food_shop;
+ FoodShopAdapter adapter;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_shop_detail);
+
+ //Init Component
+ imageShop = findViewById(R.id.image_shop);
+ recycler_view_food_shop = findViewById(R.id.recycler_view_food_shop);
+ back_image = findViewById(R.id.back_image);
+ adapter = new FoodShopAdapter();
+
+ //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đ"));
+ }
+
+ LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
+ recycler_view_food_shop.setLayoutManager(linearLayoutManager);
+
+ RecyclerView.ItemDecoration itemDecoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
+ recycler_view_food_shop.addItemDecoration(itemDecoration);
+
+ adapter.setData(listFood);
+ recycler_view_food_shop.setAdapter(adapter);
+
+ back_image.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ onBackPressed();
+ }
+ });
+
+ }
+}
\ No newline at end of file
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 4b6a38c..a7aad3d 100644
--- a/app/src/main/java/com/capstone/foodify/Fragment/SearchFragment.java
+++ b/app/src/main/java/com/capstone/foodify/Fragment/SearchFragment.java
@@ -147,8 +147,6 @@ public class SearchFragment extends Fragment {
foodAdapter.setData(listFoodSearch);
foodAdapter.notifyDataSetChanged();
hideProgressBarAndShowEndOfListText();
-
- Toast.makeText(getContext(), "List food search: " + foodData.size(), Toast.LENGTH_SHORT).show();
}
private void getListCategory() {
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 dc6532e..f20e54e 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
@@ -9,6 +9,7 @@ public class Food implements Comparable{
private String description;
private String shopName;
private String reviewCount;
+ private String quantity_sold;
public Food() {
}
public Food(String id, String img, String name, String price, String shopName) {
@@ -19,6 +20,12 @@ public class Food implements Comparable{
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;
}
@@ -68,6 +75,14 @@ public class Food implements Comparable{
this.reviewCount = reviewCount;
}
+ public String getQuantity_sold() {
+ return quantity_sold;
+ }
+
+ public void setQuantity_sold(String quantity_sold) {
+ this.quantity_sold = quantity_sold;
+ }
+
@Override
public int compareTo(Food food) {
if(getName().isEmpty() || food.getName().isEmpty()){
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 3e53df0..d477285 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
@@ -2,7 +2,6 @@ package com.capstone.foodify.Model.Food;
import android.content.Context;
import android.content.Intent;
-import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -17,9 +16,7 @@ import com.capstone.foodify.Common;
import com.capstone.foodify.R;
import com.squareup.picasso.Picasso;
-import java.text.NumberFormat;
import java.util.List;
-import java.util.Locale;
public class FoodAdapter extends RecyclerView.Adapter{
@@ -39,7 +36,7 @@ public class FoodAdapter extends RecyclerView.Adapter{
@@ -36,7 +34,7 @@ public class FoodSearchAdapter extends RecyclerView.Adapter {
+
+ private List listFoodShop;
+
+ public FoodShopAdapter() {
+ }
+
+ public void setData(List listFoodShop){
+ this.listFoodShop = listFoodShop;
+ }
+
+ @NonNull
+ @Override
+ public FoodShopViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_food_shop, parent, false);
+ return new FoodShopViewHolder(view);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull FoodShopViewHolder holder, int position) {
+ Food food = listFoodShop.get(position);
+
+ if(food == null)
+ return;
+
+ Picasso.get().load(food.getImg()).into(holder.imageView);
+ holder.foodName.setText(food.getName());
+ holder.quantitySoldOut.setText("1.2k đã bán");
+ holder.price.setText(food.getPrice());
+ }
+
+ @Override
+ public int getItemCount() {
+ if(listFoodShop != null)
+ return listFoodShop.size();
+ return 0;
+ }
+
+ public class FoodShopViewHolder extends RecyclerView.ViewHolder {
+
+ ImageView imageView;
+ TextView foodName, quantitySoldOut, price;
+
+
+ public FoodShopViewHolder(@NonNull View itemView) {
+ super(itemView);
+
+ imageView = itemView.findViewById(R.id.image_view);
+ foodName = itemView.findViewById(R.id.food_name_text_view);
+ quantitySoldOut = itemView.findViewById(R.id.quantity_sold_out);
+ price = itemView.findViewById(R.id.price_text_view);
+ }
+ }
+}
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 5e29f66..05cdcbc 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
@@ -1,15 +1,16 @@
package com.capstone.foodify.Model.Shop;
import android.content.Context;
+import android.content.Intent;
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 java.util.List;
@@ -32,7 +33,7 @@ public class ShopAdapter extends RecyclerView.Adapter
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index d28244f..d1badcc 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -77,7 +77,7 @@
android:layout_height="wrap_content"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
android:orientation="horizontal"
- tools:listitem="@layout/list_foods"
+ tools:listitem="@layout/item_food"
app:layout_constraintTop_toBottomOf="@id/recycler_view_restaurant"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
@@ -104,7 +104,7 @@
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
android:orientation="horizontal"
android:contentDescription="@string/description"
- tools:listitem="@layout/list_restaurant"
+ tools:listitem="@layout/item_shop"
app:layout_constraintTop_toBottomOf="@id/restaurant_text"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
diff --git a/app/src/main/res/layout/fragment_search.xml b/app/src/main/res/layout/fragment_search.xml
index dfbe91a..5ed1c96 100644
--- a/app/src/main/res/layout/fragment_search.xml
+++ b/app/src/main/res/layout/fragment_search.xml
@@ -46,7 +46,7 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/list_restaurant.xml b/app/src/main/res/layout/item_shop.xml
similarity index 100%
rename from app/src/main/res/layout/list_restaurant.xml
rename to app/src/main/res/layout/item_shop.xml
diff --git a/app/src/main/res/layout/menu.xml b/app/src/main/res/layout/menu.xml
index fe35366..9b9c092 100644
--- a/app/src/main/res/layout/menu.xml
+++ b/app/src/main/res/layout/menu.xml
@@ -25,7 +25,7 @@
android:layout_marginTop="10dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
android:orientation="horizontal"
- tools:listitem="@layout/list_foods"
+ tools:listitem="@layout/item_food"
app:layout_constraintTop_toBottomOf="@id/menuTitle"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index ac2ab50..f1a20ba 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -4,6 +4,7 @@
#FFFFFFFF
#ff8084
+ #CF2E33
#A3A3A3
#F99928
#ACA5A5
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index e157152..0514513 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -5,8 +5,6 @@
- @color/primaryColor
- @color/primaryColor
- @color/white
-
- - @color/black
- ?attr/colorPrimaryVariant
@@ -15,6 +13,13 @@
- @color/grayLight
+
+