From dc0a1f68e18a60755e7b3668bda6a2b720c5ec64 Mon Sep 17 00:00:00 2001 From: Nezumi <123229563+Nez27@users.noreply.github.com> Date: Mon, 20 Feb 2023 17:12:35 +0700 Subject: [PATCH] Add rating Recycler View --- .../foodify/Activity/FoodDetailActivity.java | 31 ++++++++- .../capstone/foodify/Model/Review/Review.java | 40 +++++++++++ .../foodify/Model/Review/ReviewAdapter.java | 68 +++++++++++++++++++ .../main/res/layout/activity_food_detail.xml | 3 +- app/src/main/res/layout/item_review.xml | 3 +- 5 files changed, 141 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/com/capstone/foodify/Model/Review/Review.java create mode 100644 app/src/main/java/com/capstone/foodify/Model/Review/ReviewAdapter.java 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 d44ba7b..302a1f8 100644 --- a/app/src/main/java/com/capstone/foodify/Activity/FoodDetailActivity.java +++ b/app/src/main/java/com/capstone/foodify/Activity/FoodDetailActivity.java @@ -1,6 +1,8 @@ package com.capstone.foodify.Activity; import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import android.os.Bundle; import android.view.View; @@ -14,6 +16,8 @@ import android.widget.Toast; import com.capstone.foodify.API.FoodApi; 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; import com.denzcoskun.imageslider.ImageSlider; import com.denzcoskun.imageslider.constants.ScaleTypes; @@ -47,6 +51,8 @@ public class FoodDetailActivity extends AppCompatActivity { private LinearLayout linearLayout, linearLayout2, linearLayout3; private View line; private float totalPrice, price; + private RecyclerView recyclerView_review; + private ReviewAdapter reviewAdapter; @Override @@ -73,6 +79,17 @@ public class FoodDetailActivity extends AppCompatActivity { total_txt = findViewById(R.id.total_text_view); countRating_txt = findViewById(R.id.count_rating_text_view); description_content_txt = findViewById(R.id.content_description_text_view); + recyclerView_review = findViewById(R.id.recycler_view_review); + + reviewAdapter = new ReviewAdapter(this); + + LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, RecyclerView.VERTICAL, false); + recyclerView_review.setLayoutManager(linearLayoutManager); + + reviewAdapter.setData(getListReview()); + recyclerView_review.setAdapter(reviewAdapter); + + hideUI(); //Customize UI Horizontal Quantitizer @@ -114,6 +131,18 @@ public class FoodDetailActivity extends AppCompatActivity { }); } + private List getListReview(){ + ArrayList listReview = new ArrayList<>(); + + listReview.add(new Review("User A", 5, "Very Good!")); + listReview.add(new Review("User B", 1, "Bad!")); + listReview.add(new Review("User C", 4, "Delicious!")); + listReview.add(new Review("User D", 3, "OK!")); + listReview.add(new Review("User E", 5, "Awesome!")); + + return listReview; + } + private void hideUI() { horizontalQuantitizer.setVisibility(View.GONE); imageSlider.setVisibility(View.GONE); @@ -162,7 +191,7 @@ public class FoodDetailActivity extends AppCompatActivity { price_txt.setText(fmt.format(Float.parseFloat(food.getPrice()))); discount_txt.setText("-" + food.getDiscount() + "%"); description_content_txt.setText(food.getDescription()); - countRating_txt.setText(food.getReviewCount()); + countRating_txt.setText(food.getReviewCount() + " rating"); add_to_basket_button.setText("ADD TO BASKET - " + fmt.format(0)); diff --git a/app/src/main/java/com/capstone/foodify/Model/Review/Review.java b/app/src/main/java/com/capstone/foodify/Model/Review/Review.java new file mode 100644 index 0000000..eff7788 --- /dev/null +++ b/app/src/main/java/com/capstone/foodify/Model/Review/Review.java @@ -0,0 +1,40 @@ +package com.capstone.foodify.Model.Review; + +public class Review { + private String name; + private int ratingScore; + private String content; + + public Review() { + } + + public Review(String name, int ratingScore, String content) { + this.name = name; + this.ratingScore = ratingScore; + this.content = content; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getRatingScore() { + return ratingScore; + } + + public void setRatingScore(int ratingScore) { + this.ratingScore = ratingScore; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } +} diff --git a/app/src/main/java/com/capstone/foodify/Model/Review/ReviewAdapter.java b/app/src/main/java/com/capstone/foodify/Model/Review/ReviewAdapter.java new file mode 100644 index 0000000..4e2cbbd --- /dev/null +++ b/app/src/main/java/com/capstone/foodify/Model/Review/ReviewAdapter.java @@ -0,0 +1,68 @@ +package com.capstone.foodify.Model.Review; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.capstone.foodify.Model.Menu.MenuAdapter; +import com.capstone.foodify.R; +import com.willy.ratingbar.ScaleRatingBar; + +import java.util.List; + +public class ReviewAdapter extends RecyclerView.Adapter { + + private List listReview; + private Context context; + + public ReviewAdapter(Context context) { + this.context = context; + } + + public void setData(List listReview){ + this.listReview = listReview; + notifyDataSetChanged(); + } + + @NonNull + @Override + public ReviewViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_review, parent, false); + return new ReviewViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull ReviewViewHolder holder, int position) { + Review review = listReview.get(position); + + holder.name.setText(review.getName()); + holder.ratingScore.setRating(review.getRatingScore()); + holder.content.setText(review.getContent()); + } + + @Override + public int getItemCount() { + if(listReview != null) + return listReview.size(); + return 0; + } + + public class ReviewViewHolder extends RecyclerView.ViewHolder{ + + private TextView name, content; + private ScaleRatingBar ratingScore; + + public ReviewViewHolder(@NonNull View itemView) { + super(itemView); + + name = itemView.findViewById(R.id.user_name_text_view); + ratingScore = itemView.findViewById(R.id.rating_bar); + content = itemView.findViewById(R.id.comment_user); + } + } +} diff --git a/app/src/main/res/layout/activity_food_detail.xml b/app/src/main/res/layout/activity_food_detail.xml index ef53988..36293bd 100644 --- a/app/src/main/res/layout/activity_food_detail.xml +++ b/app/src/main/res/layout/activity_food_detail.xml @@ -270,8 +270,9 @@