diff --git a/Foodify/app/build.gradle b/Foodify/app/build.gradle
index d9918db..0d8e469 100644
--- a/Foodify/app/build.gradle
+++ b/Foodify/app/build.gradle
@@ -63,7 +63,7 @@ dependencies {
implementation 'com.github.d-max:spots-dialog:0.7@aar'
implementation 'com.squareup.picasso:picasso:2.5.2'
- implementation 'com.firebaseui:firebase-ui-database:1.2.0'
+ implementation 'com.firebaseui:firebase-ui-database:3.2.0'
implementation 'io.paperdb:paperdb:2.1'
implementation 'com.github.rey5137:material:1.2.4'
diff --git a/Foodify/app/src/main/AndroidManifest.xml b/Foodify/app/src/main/AndroidManifest.xml
index f552e27..788325c 100644
--- a/Foodify/app/src/main/AndroidManifest.xml
+++ b/Foodify/app/src/main/AndroidManifest.xml
@@ -19,6 +19,9 @@
android:theme="@style/Theme.Foodify"
tools:replace="android:theme"
tools:targetApi="31">
+
@@ -28,7 +31,6 @@
-
@@ -57,8 +59,7 @@
+ android:theme="@style/Theme.Foodify.NoActionBar">
@@ -71,7 +72,6 @@
-
@@ -79,7 +79,6 @@
-
\ No newline at end of file
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/Common/Common.java b/Foodify/app/src/main/java/com/waterbase/foodify/Common/Common.java
index e27a198..7e55f8a 100644
--- a/Foodify/app/src/main/java/com/waterbase/foodify/Common/Common.java
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/Common/Common.java
@@ -15,6 +15,8 @@ public class Common {
private static final String BASE_URL = "https://fcm.googleapis.com/";
private static final String GOOGLE_API_URL = "https://maps.googleapis.com/";
+ public static final String INTENT_FOOD_ID = "FoodId";
+
public static APIService getFCMService(){
return RetrofitClient.getClient(BASE_URL).create(APIService.class);
}
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/FoodDetail.java b/Foodify/app/src/main/java/com/waterbase/foodify/FoodDetail.java
index 2a83556..2284240 100644
--- a/Foodify/app/src/main/java/com/waterbase/foodify/FoodDetail.java
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/FoodDetail.java
@@ -1,6 +1,7 @@
package com.waterbase.foodify;
import android.content.Context;
+import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
@@ -15,6 +16,8 @@ import androidx.appcompat.app.AppCompatActivity;
import com.andremion.counterfab.CounterFab;
import com.cepheuen.elegantnumberbutton.view.ElegantNumberButton;
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.Task;
import com.google.android.material.appbar.CollapsingToolbarLayout;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.firebase.database.DataSnapshot;
@@ -34,6 +37,7 @@ import com.waterbase.foodify.Model.Rating;
import java.util.Arrays;
+import info.hoang8f.widget.FButton;
import io.github.inflationx.calligraphy3.CalligraphyConfig;
import io.github.inflationx.calligraphy3.CalligraphyInterceptor;
import io.github.inflationx.viewpump.ViewPump;
@@ -56,6 +60,8 @@ public class FoodDetail extends AppCompatActivity implements RatingDialogListene
DatabaseReference foods;
DatabaseReference ratingTbl;
+ FButton btnShowComment;
+
Food currentFood;
@Override
@@ -78,6 +84,16 @@ public class FoodDetail extends AppCompatActivity implements RatingDialogListene
setContentView(R.layout.activity_food_detail);
+ btnShowComment = findViewById(R.id.btnShowComment);
+ btnShowComment.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent(FoodDetail.this, ShowComment.class);
+ intent.putExtra(Common.INTENT_FOOD_ID, foodId);
+ startActivity(intent);
+ }
+ });
+
//Firebase
database = FirebaseDatabase.getInstance();
foods = database.getReference("Foods");
@@ -239,26 +255,35 @@ public class FoodDetail extends AppCompatActivity implements RatingDialogListene
foodId,
String.valueOf(value),
comments);
- ratingTbl.child(Common.currentUser.getPhone()).addValueEventListener(new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot dataSnapshot) {
- if (dataSnapshot.child(Common.currentUser.getPhone()).exists()) {
- //Remove old feedback
- ratingTbl.child(Common.currentUser.getPhone()).removeValue();
- //Update new feedback
- ratingTbl.child(Common.currentUser.getPhone()).setValue(rating);
- } else {
- //Update new value
- ratingTbl.child(Common.currentUser.getPhone()).setValue(rating);
- }
- Toast.makeText(FoodDetail.this, "Cảm ơn bạn đã đánh giá món ăn!", Toast.LENGTH_SHORT).show();
- }
-
- @Override
- public void onCancelled(DatabaseError databaseError) {
-
- }
- });
+ ratingTbl.push()
+ .setValue(rating)
+ .addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ Toast.makeText(FoodDetail.this, "Cảm ơn bạn đã đánh giá!", Toast.LENGTH_SHORT).show();
+ }
+ });
+// ratingTbl.child(Common.currentUser.getPhone()).addValueEventListener(new ValueEventListener() {
+// @Override
+// public void onDataChange(DataSnapshot dataSnapshot) {
+// if (dataSnapshot.child(Common.currentUser.getPhone()).exists()) {
+// //Remove old feedback
+// ratingTbl.child(Common.currentUser.getPhone()).removeValue();
+// //Update new feedback
+// ratingTbl.child(Common.currentUser.getPhone()).setValue(rating);
+// } else {
+//
+// //Update new value
+// ratingTbl.child(Common.currentUser.getPhone()).setValue(rating);
+// }
+// Toast.makeText(FoodDetail.this, "Cảm ơn bạn đã đánh giá món ăn!", Toast.LENGTH_SHORT).show();
+// }
+//
+// @Override
+// public void onCancelled(DatabaseError databaseError) {
+//
+// }
+// });
}
}
\ 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 4eae199..bd1aaf6 100644
--- a/Foodify/app/src/main/java/com/waterbase/foodify/FoodList.java
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/FoodList.java
@@ -12,15 +12,19 @@ import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
+import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
+import android.view.ViewGroup;
import android.widget.Toast;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
+import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
+import com.google.firebase.database.Query;
import com.google.firebase.database.ValueEventListener;
import com.mancj.materialsearchbar.MaterialSearchBar;
import com.squareup.picasso.Picasso;
@@ -195,15 +199,22 @@ public class FoodList extends AppCompatActivity {
actionBar.setDisplayHomeAsUpEnabled(true);
}
+ @Override
+ protected void onResume() {
+ super.onResume();
+ loadListFood(categoryId);
+ }
+
private void startSearch(CharSequence text) {
- searchAdapter = new FirebaseRecyclerAdapter(
- Food.class,
- R.layout.food_item,
- FoodViewHolder.class,
- foodList.orderByChild("Name").equalTo(text.toString())
- ) {
+ //Create query by name
+ Query searchByName = foodList.orderByChild("Name").equalTo(text.toString());
+ //Create options with query
+ FirebaseRecyclerOptions foodOptions = new FirebaseRecyclerOptions.Builder()
+ .setQuery(searchByName, Food.class)
+ .build();
+ searchAdapter = new FirebaseRecyclerAdapter(foodOptions) {
@Override
- protected void populateViewHolder(FoodViewHolder viewHolder, Food model, int i) {
+ protected void onBindViewHolder(@NonNull FoodViewHolder viewHolder, int i, @NonNull Food model) {
viewHolder.food_name.setText(model.getName());
Picasso.with(getBaseContext()).load(model.getImage()).into(viewHolder.food_image);
@@ -217,7 +228,17 @@ public class FoodList extends AppCompatActivity {
}
});
}
+
+ @NonNull
+ @Override
+ public FoodViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View itemView = LayoutInflater.from(parent.getContext())
+ .inflate(R.layout.food_item, parent, false);
+ return new FoodViewHolder(itemView);
+ }
};
+
+ searchAdapter.startListening();
recyclerView.setAdapter(searchAdapter); //Set adapter for Recycler View is Search result
}
@@ -240,11 +261,16 @@ public class FoodList extends AppCompatActivity {
}
private void loadListFood(String categoryId){
- adapter = new FirebaseRecyclerAdapter(Food.class, R.layout.food_item,
- FoodViewHolder.class, foodList.orderByChild("menuId").equalTo(categoryId) // like: Select * from Foods where MenuId = 'categoryId'
- ) {
+ //Create query by category Id
+ Query searchByName = foodList.orderByChild("menuId").equalTo(categoryId);
+ //Create Options with query
+ FirebaseRecyclerOptions foodOptions = new FirebaseRecyclerOptions.Builder()
+ .setQuery(searchByName, Food.class)
+ .build();
+
+ adapter = new FirebaseRecyclerAdapter(foodOptions) {
@Override
- protected void populateViewHolder(FoodViewHolder viewHolder, Food model, int position) {
+ protected void onBindViewHolder(@NonNull FoodViewHolder viewHolder, int position, @NonNull Food model) {
viewHolder.food_name.setText(model.getName());
viewHolder.food_price.setText(String.format("%s đ", model.getPrice()));
Picasso.with(getBaseContext()).load(model.getImage()).into(viewHolder.food_image);
@@ -254,7 +280,7 @@ public class FoodList extends AppCompatActivity {
@Override
public void onClick(View v) {
new Database(getBaseContext()).addToCart(new Order(
- adapter.getRef(position).getKey(),
+ adapter.getRef(viewHolder.getAdapterPosition()).getKey(),
model.getName(),
"1",
model.getPrice(),
@@ -274,12 +300,12 @@ public class FoodList extends AppCompatActivity {
viewHolder.fav_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- if(!localDB.isFavorite(adapter.getRef(position).getKey())){
- localDB.addToFavorites(adapter.getRef(position).getKey());
+ if(!localDB.isFavorite(adapter.getRef(viewHolder.getAdapterPosition()).getKey())){
+ localDB.addToFavorites(adapter.getRef(viewHolder.getAdapterPosition()).getKey());
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 {
- localDB.removeFromFavorites(adapter.getRef(position).getKey());
+ localDB.removeFromFavorites(adapter.getRef(viewHolder.getAdapterPosition()).getKey());
viewHolder.fav_image.setImageResource(R.drawable.ic_baseline_favorite_border_24);
Toast.makeText(FoodList.this, model.getName() + " đã xoá khỏi danh sách yêu thích", Toast.LENGTH_SHORT).show();
}
@@ -296,13 +322,32 @@ public class FoodList extends AppCompatActivity {
}
});
}
+
+ @NonNull
+ @Override
+ public FoodViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View itemView = LayoutInflater.from(parent.getContext())
+ .inflate(R.layout.food_item, parent, false);
+ return new FoodViewHolder(itemView);
+ }
};
//Set Adapter
recyclerView.setAdapter(adapter);
+ adapter.startListening();
swipeRefreshLayout.setRefreshing(false);
}
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ if(adapter == null) {
+ adapter.stopListening();
+ searchAdapter.stopListening();
+ }
+ }
+
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
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 36ed5ef..7dfbc30 100644
--- a/Foodify/app/src/main/java/com/waterbase/foodify/Home.java
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/Home.java
@@ -8,6 +8,7 @@ import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
+import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import android.view.animation.LayoutAnimationController;
import android.widget.TextView;
@@ -26,6 +27,7 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.andremion.counterfab.CounterFab;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
+import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.Task;
@@ -145,9 +147,13 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati
database = FirebaseDatabase.getInstance();
category = database.getReference("Category");
- adapter = new FirebaseRecyclerAdapter(Category.class, R.layout.menu_item, MenuViewHolder.class, category) {
+ FirebaseRecyclerOptions options = new FirebaseRecyclerOptions.Builder()
+ .setQuery(category, Category.class)
+ .build();
+
+ adapter = new FirebaseRecyclerAdapter(options) {
@Override
- protected void populateViewHolder(MenuViewHolder viewHolder, Category model, int position) {
+ protected void onBindViewHolder(@NonNull MenuViewHolder viewHolder, int i, @NonNull Category model) {
viewHolder.txtMenuName.setText(model.getName());
Picasso.with(getBaseContext()).load(model.getImage())
.into(viewHolder.imageView);
@@ -163,8 +169,18 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati
}
});
}
+
+ @NonNull
+ @Override
+ public MenuViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View itemView = LayoutInflater.from(parent.getContext())
+ .inflate(R.layout.menu_item, parent, false);
+ return new MenuViewHolder(itemView);
+ }
};
+ adapter.startListening();
+
//Init paper
Paper.init(this);
@@ -184,9 +200,16 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati
}
+ @Override
+ protected void onStop() {
+ super.onStop();
+ adapter.stopListening();
+ }
+
@Override
protected void onResume() {
super.onResume();
+ adapter.startListening();
fab.setCount(new Database(this).getCountCart());
}
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/OrderStatus.java b/Foodify/app/src/main/java/com/waterbase/foodify/OrderStatus.java
index 0b77a30..f02b349 100644
--- a/Foodify/app/src/main/java/com/waterbase/foodify/OrderStatus.java
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/OrderStatus.java
@@ -2,7 +2,10 @@ package com.waterbase.foodify;
import android.content.Context;
import android.os.Bundle;
+import android.view.LayoutInflater;
import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
@@ -11,8 +14,10 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
+import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
+import com.google.firebase.database.Query;
import com.waterbase.foodify.Common.Common;
import com.waterbase.foodify.Model.Request;
import com.waterbase.foodify.ViewHolder.OrderViewHolder;
@@ -77,24 +82,41 @@ public class OrderStatus extends AppCompatActivity {
}
private void loadOrders(String phone) {
- adapter = new FirebaseRecyclerAdapter(
- Request.class,
- R.layout.order_layout,
- OrderViewHolder.class,
- requests.orderByChild("phone")
- .equalTo(phone)
- ) {
+
+ Query getOrderByUser = requests.orderByChild("phone")
+ .equalTo(phone);
+
+ FirebaseRecyclerOptions orderOptions = new FirebaseRecyclerOptions.Builder()
+ .setQuery(getOrderByUser, Request.class)
+ .build();
+
+ adapter = new FirebaseRecyclerAdapter(orderOptions) {
@Override
- protected void populateViewHolder(OrderViewHolder orderViewHolder, Request model, int i) {
+ protected void onBindViewHolder(@NonNull OrderViewHolder orderViewHolder, int i, @NonNull Request model) {
orderViewHolder.txtOrderId.setText(adapter.getRef(i).getKey());
orderViewHolder.txtOrderStatus.setText(Common.convertCodeToStatus(model.getStatus()));
orderViewHolder.txtOrderAddress.setText(model.getAddress());
orderViewHolder.txtOrderPhone.setText(model.getPhone());
}
+
+ @NonNull
+ @Override
+ public OrderViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View itemView = LayoutInflater.from(parent.getContext())
+ .inflate(R.layout.order_layout, parent, false);
+ return new OrderViewHolder(itemView);
+ }
};
+ adapter.startListening();
recyclerView.setAdapter(adapter);
}
+ @Override
+ protected void onStop() {
+ super.onStop();
+ adapter.stopListening();
+ }
+
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/ShowComment.java b/Foodify/app/src/main/java/com/waterbase/foodify/ShowComment.java
new file mode 100644
index 0000000..efd4af7
--- /dev/null
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/ShowComment.java
@@ -0,0 +1,90 @@
+package com.waterbase.foodify;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
+
+import android.content.Context;
+import android.os.Bundle;
+
+import com.firebase.ui.database.FirebaseRecyclerAdapter;
+import com.google.firebase.database.DatabaseReference;
+import com.google.firebase.database.FirebaseDatabase;
+import com.google.firebase.database.Query;
+import com.waterbase.foodify.Common.Common;
+import com.waterbase.foodify.Model.Rating;
+import com.waterbase.foodify.ViewHolder.ShowCommentViewHolder;
+
+import io.github.inflationx.calligraphy3.CalligraphyConfig;
+import io.github.inflationx.calligraphy3.CalligraphyInterceptor;
+import io.github.inflationx.viewpump.ViewPump;
+import io.github.inflationx.viewpump.ViewPumpContextWrapper;
+
+public class ShowComment extends AppCompatActivity {
+
+ RecyclerView recyclerView;
+ RecyclerView.LayoutManager layoutManager;
+
+ FirebaseDatabase database;
+ DatabaseReference ratingTbl;
+
+ SwipeRefreshLayout mSwipeRefreshLayout;
+
+ FirebaseRecyclerAdapter adapter;
+
+ String foodId = "";
+
+
+ @Override
+ protected void attachBaseContext(Context newBase) {
+ super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase));
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ if(adapter != null)
+ adapter.stopListening();
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ //Set font all activity
+ ViewPump.init(ViewPump.builder()
+ .addInterceptor(new CalligraphyInterceptor(
+ new CalligraphyConfig.Builder()
+ .setDefaultFontPath("fonts/font.ttf")
+ .setFontAttrId(io.github.inflationx.calligraphy3.R.attr.fontPath)
+ .build()))
+ .build());
+
+ setContentView(R.layout.activity_show_comment);
+
+ //Firebase
+ database = FirebaseDatabase.getInstance();
+ ratingTbl = database.getReference("Rating");
+
+ recyclerView = findViewById(R.id.recyclerComment);
+ layoutManager = new LinearLayoutManager(this);
+ recyclerView.setLayoutManager(layoutManager);
+
+ //Swipe Layout
+ mSwipeRefreshLayout = findViewById(R.id.swipe_layout);
+ mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ if(getIntent() != null)
+ foodId = getIntent().getStringExtra(Common.INTENT_FOOD_ID);
+ if(!foodId.isEmpty() && foodId != null)
+ {
+ Query query = ratingTbl.orderByChild("foodId").equalTo(foodId);
+
+
+ }
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/ShowCommentViewHolder.java b/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/ShowCommentViewHolder.java
new file mode 100644
index 0000000..660a3fa
--- /dev/null
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/ShowCommentViewHolder.java
@@ -0,0 +1,23 @@
+package com.waterbase.foodify.ViewHolder;
+
+import android.view.View;
+import android.widget.RatingBar;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.waterbase.foodify.R;
+
+public class ShowCommentViewHolder extends RecyclerView.ViewHolder {
+
+ public TextView txtUserPhone, txtComment;
+ public RatingBar ratingBar;
+
+ public ShowCommentViewHolder(@NonNull View itemView) {
+ super(itemView);
+ txtComment = itemView.findViewById(R.id.txtComment);
+ txtUserPhone = itemView.findViewById(R.id.txtUserPhone);
+ ratingBar = itemView.findViewById(R.id.ratingBar);
+ }
+}
diff --git a/Foodify/app/src/main/res/layout/activity_food_detail.xml b/Foodify/app/src/main/res/layout/activity_food_detail.xml
index c4fce60..9e497c1 100644
--- a/Foodify/app/src/main/res/layout/activity_food_detail.xml
+++ b/Foodify/app/src/main/res/layout/activity_food_detail.xml
@@ -175,6 +175,21 @@
+
diff --git a/Foodify/app/src/main/res/layout/activity_show_comment.xml b/Foodify/app/src/main/res/layout/activity_show_comment.xml
new file mode 100644
index 0000000..4aca9cc
--- /dev/null
+++ b/Foodify/app/src/main/res/layout/activity_show_comment.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Foodify/app/src/main/res/layout/show_comment_layout.xml b/Foodify/app/src/main/res/layout/show_comment_layout.xml
new file mode 100644
index 0000000..b275fb9
--- /dev/null
+++ b/Foodify/app/src/main/res/layout/show_comment_layout.xml
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file