如何解决如何在Android Studio中的回收站适配器中处理多次单击事件
当我单击“添加到购物车”按钮时,我还将显示也单击了另一种产品。我要设置“添加到购物车”按钮,然后显示增加和减少按钮的可见性。
这是我的适配器代码。
'''
公共类PrdouctByCategoryAdapter扩展了RecyclerView.Adapter
private Context mContext;
List<ProductByCategoryModel> productByCategoryModelList;
int quantity1 = 0;
private ProgressDialog pDialog;
CustomSharedPrefs objCustomSharedPrefs;
public PrdouctByCategoryAdapter(Context mContext,List<ProductByCategoryModel> productByCategoryModelList) {
this.mContext = mContext;
this.productByCategoryModelList= productByCategoryModelList;
}
@NonNull
@Override
public PrdouctByCategoryAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
LayoutInflater inflater = LayoutInflater.from(mContext);
View view = inflater.inflate(R.layout.slide_main_item,parent,false);
return new ViewHolder(view);
}
@SuppressLint("SetTextI18n")
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder,final int position) {
pDialog = CommonMethod.getProgressDialog(mContext);
objCustomSharedPrefs = new CustomSharedPrefs(mContext);
ProductByCategoryModel productByCategoryModel = productByCategoryModelList.get(position);
holder.qntyAmount.setText(productByCategoryModelList.get(position).getProduct_qty() + productByCategoryModelList.get(position).getProductUnit());
holder.productPrice.setText("Rs. " + String.valueOf(productByCategoryModelList.get(position).getProduct_mrp_price()) + " - ");
holder.productName.setText(productByCategoryModelList.get(position).getProduct_name());
Picasso.get().load(productByCategoryModelList.get(position).getMobile_icon()).into(holder.productimage);
int priceMain = productByCategoryModelList.get(position).getProduct_mrp_price();
holder.hinditextVeiw.setText("( " + productByCategoryModelList.get(position).getProduct_name_hindi() + " )");
holder.addtocartbtn.setonClickListener(v -> {
if (mContext instanceof ViewProduct) {
if (Validation.validateString(productByCategoryModelList.get(position).getProduct_id())) {
((ViewProduct) mContext).addtoCartCall(productByCategoryModelList.get(position).getProduct_id(),productByCategoryModelList.get(position).getCategory_id(),productByCategoryModelList.get(position).getProduct_qty(),priceMain,productByCategoryModelList.get(position).getMember_id(),productByCategoryModelList.get(position).getSubcategoryName());
holder.addtocartbtn.setVisibility(View.GONE);
holder.add_subs.setVisibility(View.VISIBLE);
holder.totalPrice.setText("₹" + String.valueOf(productByCategoryModel.getProduct_mrp_price()));
notifyDataSetChanged();
}
}
});
holder.plus.setonClickListener(v -> {
if (mContext instanceof ViewProduct) {
try {
quantity1 = quantity1 + 1;
int productPrice = productByCategoryModelList.get(position).getProduct_mrp_price() * quantity1;
int valueQNty = productByCategoryModelList.get(position).getProduct_qty() * quantity1;
holder.quantity.setText(String.valueOf(quantity1));
holder.totalPrice.setText("₹" + String.valueOf(productPrice));
if (Validation.validateString(productByCategoryModelList.get(position).getProduct_id())) {
((ViewProduct) mContext).increaseQntyCall(productByCategoryModelList.get(position).getProduct_id(),String.valueOf(valueQNty),productPrice,productByCategoryModelList.get(position).getSubcategoryName());
notifyDataSetChanged();
}
} catch (Exception e) {
}
}
});
holder.minus.setonClickListener(v -> {
try {
if (quantity1 != 1) {
if (mContext instanceof ViewProduct) {
quantity1 = quantity1 - 1;
int productPrice = productByCategoryModelList.get(position).getProduct_mrp_price() * quantity1;
int valueQNty = productByCategoryModelList.get(position).getProduct_qty() * quantity1;
holder.quantity.setText(String.valueOf(quantity1));
holder.totalPrice.setText("₹" + String.valueOf(productPrice));
if (Validation.validateString(productByCategoryModelList.get(position).getProduct_id())) {
((ViewProduct) mContext).increaseQntyCall(productByCategoryModelList.get(position).getProduct_id(),productByCategoryModelList.get(position).getSubcategoryName());
}
}
} else {
holder.addtocartbtn.setVisibility(View.VISIBLE);
holder.add_subs.setVisibility(View.GONE);
}
} catch (Exception e) {
}
notifyDataSetChanged();
});
}
@Override
public int getItemCount() {
return productByCategoryModelList.size();
}
static class ViewHolder extends RecyclerView.ViewHolder {
ImageView productimage,favourate,plus,minus;
TextView productName;
TextView productPrice;
TextView qntyAmount,quantity,totalPrice;
Button addtocartbtn;
TextView hinditextVeiw;
LinearLayout add_subs;
public ViewHolder(@NonNull View itemView) {
super(itemView);
productimage = itemView.findViewById(R.id.prodcutMainImage);
productName = itemView.findViewById(R.id.product_name_main_item);
productPrice = itemView.findViewById(R.id.pricePerqunaty);
qntyAmount = itemView.findViewById(R.id.peramountQunty);
//favourate = itemView.findViewById(R.id.img_favroute);
addtocartbtn = itemView.findViewById(R.id.button_add_toCart1);
plus = itemView.findViewById(R.id.plus1);
minus = itemView.findViewById(R.id.minus1);
quantity = itemView.findViewById(R.id.quantity23);
add_subs = itemView.findViewById(R.id.add_subs1);
totalPrice = itemView.findViewById(R.id.totalPrice);
hinditextVeiw= itemView.findViewById(R.id.hindiStringProdcut);
}
}
}
'''
解决方法
您可以使用界面在recylcerview中处理多个事件
请检查以下示例
https://antonioleiva.com/recyclerview-listener/
,您可以使用界面轻松实现此目的。 首先,您需要像下面这样在适配器类中传递接口引用
class SampleAdapter(
private val mContext: Context,private val sampleModelList: ArrayList<SampleModel>,private val onItemClickListener: AddItemToCartClickListener) : RecyclerView.Adapter<SampleAdapter.MyViewHolder>() {****
之后,您需要在适配器类中创建接口:
interface AddToCartListener {
fun onAddItemToCartClick(
position: Int,view: View,itemModel: SampleModel
)
}
您可以在按钮的点击事件中调用界面,例如
holder.itemView.setOnClickListener { view ->
onItemClickListener.onAddItemToCartClick(
position,view,itemModel
)
}
最后,只需在Activity类中实现接口,您将获得单个项的值。 现在,您可以创建多个接口,并且可以做任何您需要的事情。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。