У меня проблема с onClickListener
для кнопки в элементе GridView
.Я нажимаю кнопку один раз.Однако после однократного выполнения функции onClick
она вызывается автоматически в течение определенного времени.Как я могу предотвратить автоматическое нажатие кнопки?Вот мой код адаптера:
@SuppressLint("ViewHolder")
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
assert inflater != null;
convertView = inflater.inflate(R.layout.single_product,parent,false);
Button buy = convertView.findViewById(R.id.btn_buy);
buy.setOnClickListener(new View.OnClickListener() {
double price = Double.parseDouble(products.get(position).getProductPrice());
@Override
public void onClick(View v) {
ringProgressDialog = ProgressDialog.show(context,
"Getting Information ...", "Please wait...", true);
assert user != null;
final String userId = user.getUid();
database.child(userId).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ringProgressDialog.dismiss();
if (dataSnapshot.exists()) {
userInfo = dataSnapshot.getValue(User.class);
assert userInfo != null;
double coin = Double.parseDouble(userInfo.getUserCoin());
if (coin<price){
Toast.makeText(context, "Not enough Coin.", Toast.LENGTH_LONG).show();
} else {
coin -= Double.parseDouble(products.get(position).getProductPrice());
userInfo.setUserCoin(String.valueOf(coin));
database.child(userId).setValue(userInfo).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
Operation.ShowAlertDialogue(context);
} else {
Toast.makeText(context, "There was an error. Please try again.", Toast.LENGTH_LONG).show();
}
}
});
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
ringProgressDialog.dismiss();
Toast.makeText(context, "Something not right.", Toast.LENGTH_SHORT).show();
}
});
}
});
return convertView;
}
Код внутри метода OnClick
продолжает выполняться до тех пор, пока значение coin
не станет 0. Как я могу предотвратить это?
Заранее спасибо.