如何在Android Studio中的回收站适配器中处理多次单击事件

如何解决如何在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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?