ac
unknown
plain_text
7 months ago
7.3 kB
4
Indexable
package com.example.iceteastore.adapters;
import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Base64;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.example.iceteastore.R;
import com.example.iceteastore.daos.FavoriteDAO;
import com.example.iceteastore.daos.ShoppingCartDAO;
import com.example.iceteastore.models.Product;
import com.example.iceteastore.models.ShoppingCart;
import com.example.iceteastore.utils.SessionManager;
import com.example.iceteastore.views.DetailActivity;
import com.google.android.material.bottomsheet.BottomSheetBehavior;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import java.util.ArrayList;
import java.util.List;
public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.ProductViewHolder> {
private Context context;
private List<Product> productList;
private SessionManager sessionManager; // Khai báo SessionManager
public ProductAdapter(Context context, List<Product> productList) {
this.context = context;
this.productList = productList;
this.sessionManager = new SessionManager(context); // Khởi tạo SessionManager trong constructor
}
@NonNull
@Override
public ProductViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.item_product, parent, false);
return new ProductViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ProductViewHolder holder, int position) {
Product product = productList.get(position);
String username = sessionManager.getLoggedInUser(); // Lấy username từ session trong onBindViewHolder
// Kiểm tra nếu username null thì thông báo
if (username == null) {
Toast.makeText(context, "Bạn chưa đăng nhập!", Toast.LENGTH_SHORT).show();
return;
}
holder.tvProductName.setText(product.getName());
holder.tvPrice.setText("$" + product.getPrice());
String imageResource = product.getImage();
if (imageResource != null && !imageResource.isEmpty()) {
Glide.with(context).load(imageResource).into(holder.ivProductImage);
} else {
holder.ivProductImage.setImageResource(R.drawable.placeholder_image);
}
// Kiểm tra sản phẩm có trong danh sách yêu thích không
FavoriteDAO favoriteDAO = new FavoriteDAO(context);
SharedPreferences sharedPreferences = context.getSharedPreferences("LoginSession", Context.MODE_PRIVATE);
boolean isFavorite = favoriteDAO.isFavorite(username, product.getId());
// Cập nhật UI của icon trái tim
holder.ivFavorite.setImageResource(isFavorite ? R.drawable.ic_favorite_filled : R.drawable.ic_favorite_border);
// Xử lý khi nhấn vào icon yêu thích
holder.ivFavorite.setOnClickListener(v -> {
if (favoriteDAO.isFavorite(username, product.getId())) {
favoriteDAO.removeFromFavorites(username, product.getId());
holder.ivFavorite.setImageResource(R.drawable.ic_favorite_border);
} else {
favoriteDAO.addToFavorites(username, product.getId());
holder.ivFavorite.setImageResource(R.drawable.ic_favorite_filled);
}
});
// Xử lý khi bấm vào tên sản phẩm
holder.tvProductName.setOnClickListener(v -> {
View dialogView = LayoutInflater.from(context).inflate(R.layout.activity_product_detail, null);
BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(context);
bottomSheetDialog.setContentView(dialogView);
BottomSheetBehavior<View> bottomSheetBehavior = BottomSheetBehavior.from((View) dialogView.getParent());
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
bottomSheetBehavior.setPeekHeight(BottomSheetBehavior.PEEK_HEIGHT_AUTO);
ImageView ivDialogProductImage = dialogView.findViewById(R.id.ivProductImage);
TextView tvDialogProductName = dialogView.findViewById(R.id.tvProductName);
TextView tvDialogRating = dialogView.findViewById(R.id.tvRating);
TextView tvDialogPrice = dialogView.findViewById(R.id.tvPrice);
tvDialogProductName.setText(product.getName());
tvDialogRating.setText("⭐ " + product.getRating() + " (" + product.getReviews() + " reviews)");
tvDialogPrice.setText("$" + product.getPrice());
Button btnAddToOrder = dialogView.findViewById(R.id.btn_order);
// Xử lý khi bấm nút "Add to order"
btnAddToOrder.setOnClickListener(v1 -> {
ShoppingCartDAO shoppingCartDAO = new ShoppingCartDAO(context);
ShoppingCart item = new ShoppingCart(product.getName(), product.getImage(), 1, product.getPrice());
shoppingCartDAO.addToCart(username, item);
Toast.makeText(context, "Đã thêm " + product.getName() + " vào giỏ hàng!", Toast.LENGTH_SHORT).show();
bottomSheetDialog.dismiss();
Log.d("ShoppingCartDAO", "Added item: " + item.getName());
});
bottomSheetDialog.show();
});
}
@Override
public int getItemCount() {
return productList.size();
}
public void filterList(List<Product> filteredList) {
this.productList = new ArrayList<>(filteredList);
notifyDataSetChanged();
}
public static class ProductViewHolder extends RecyclerView.ViewHolder {
TextView tvProductName, tvRating, tvPrice;
ImageView ivProductImage, ivFavorite;
Button btnOrder;
public ProductViewHolder(@NonNull View itemView) {
super(itemView);
tvProductName = itemView.findViewById(R.id.tvProductName);
tvRating = itemView.findViewById(R.id.tvRating);
tvPrice = itemView.findViewById(R.id.tvPrice);
ivProductImage = itemView.findViewById(R.id.ivProductImage);
ivFavorite = itemView.findViewById(R.id.ivFavorite); // Nút yêu thích
btnOrder = itemView.findViewById(R.id.btn_order);
}
}
private Bitmap convertBase64ToBitmap(String base64String) {
try {
byte[] decodedBytes = Base64.decode(base64String, Base64.DEFAULT);
return BitmapFactory.decodeByteArray(decodedBytes, 0, decodedBytes.length);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
Editor is loading...
Leave a Comment