0

I am trying to execute the code under the spinnerOnItemSelected listener from my adapter , when the user selects a number from the spinner, but the code is being ran as soon as the fragment is launched which is not what I want. I would like for it to run only when the user selects an item from the spinner.

public void onBindViewHolder(@NonNull ViewHolder holder, @SuppressLint("RecyclerView") final int position) {
    holder.produceName.setText(cartArrayList.get(position).getProductName());
    holder.producePrice.setText("$" + cartArrayList.get(position).getItemPrice());
    holder.numberOfItemsTv.setText("Quantiy: " + cartArrayList.get(position).getQuantity());
    getCurrentUserUid();

    // and store name of courses
    String[]  quantity = { "1", "2",
            "3", "4",
            "5", "6" };

    ArrayAdapter ad
            = new ArrayAdapter(
            ct,
            android.R.layout.simple_spinner_item,
            quantity);

    // set simple layout resource file
    // for each item of spinner
    ad.setDropDownViewResource(
            android.R.layout
                    .simple_spinner_dropdown_item);

    // Set the ArrayAdapter (ad) data on the
    // Spinner which binds data to spinner
    holder.spinner.setAdapter(ad);









    holder.spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            Log.i("tapped","tapped");




            String selectedItemFromSpinner =  adapterView.getItemAtPosition(i).toString();


            Log.i("selectedItemFromSpinner",selectedItemFromSpinner);

            FirebaseDatabase.getInstance().getReference("Cart").child(loggedInUserId).child(cartArrayList.get(position).getTimestamp()).child("quantity").setValue(selectedItemFromSpinner).addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if(task.isSuccessful()){
                        holder.middleQUanityTv.setText( selectedItemFromSpinner + "");
                        holder.numberOfItemsTv.setText("Quantity: " + selectedItemFromSpinner + "");

                    }
                }
            });



        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });



    //Log.i("IMAGES", productArrayList.get(position).getProductImage());
    Glide.with(ct)
            .load(cartArrayList.get(position).getProductImage())
            .centerCrop()
            .into(holder.productImage);


}

0 Answers0