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);
}