Я пытаюсь отредактировать и обновить уже сохраненные данные карты банкомата. Я использую Alert Dialog с Layout для редактирования данных карты. Здесь пользователь после заполнения деталей нажимает на положительную (обновляемую) кнопку Alert Dialog и не закрывается, вместо этого он проверяет пользовательский ввод.
Но проблема в том, что когда пользователь вводит имя держателя карты (или любую другую информацию) и нажимает на обновление (кнопка «Позитив»), он по-прежнему показывает тот же тост, что и «Поле держателя карты не заполнено». Кажется, что детали не обновляются с последними деталями. Пожалуйста, помогите мне в решении проблемы.
override fun onBindViewHolder(p0: ViewHolder, p1: Int) {
val card: Cards = cards[p1]
p0.BankName.text = card.bankName
p0.CVV.text = card.cardCVV
p0.CardHolderName.text = card.cardHolderName
p0.Expire.text = card.validity
p0.CardNumber.text = card.cardNumber
p0.optionsMenu.setOnClickListener(View.OnClickListener {
val popupMenu = PopupMenu(mContext, p0.optionsMenu)
popupMenu.inflate(R.menu.option_menu)
popupMenu.setOnMenuItemClickListener { item ->
when (item.itemId) {
R.id.mnu_item_Edit -> {
var message: String = "Details Updated"
val inflater = LayoutInflater.from(mContext)
val view = inflater.inflate(R.layout.update1, null)
var builder = AlertDialog.Builder(mContext)
.setTitle("Update Card details")
.setView(view)
.setPositiveButton("Update", DialogInterface.OnClickListener { dialog, which -> })
.setNegativeButton("Cancel", DialogInterface.OnClickListener { dialog, which -> })
val alert = builder.create()
alert.show()
alert.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(View.OnClickListener {
val isUpdate: Boolean = MainActivity.dbHander.editCard(
card.cardID.toString(),
view.uBankName.text.toString(),
view.uCardNumber.text.toString(),
view.uCardCVV.text.toString(),
view.uCardHolder.text.toString(),
view.uCardValidity.text.toString()
)
if (isUpdate == true) {
cards[p1].bankName = view.uBankName.text.toString()
cards[p1].cardHolderName = view.uCardHolder.text.toString()
cards[p1].cardNumber = view.uCardNumber.text.toString()
cards[p1].cardCVV = view.uCardCVV.text.toString()
cards[p1].validity = view.uCardValidity.text.toString()
notifyDataSetChanged()
Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show()
alert.dismiss()
}
})
}
}
popupMenu.show()
}
})
}
Я проверяю пользовательские данные по методу ниже
fun editCard(
cardId: String,
bankName: String,
cardHolderName: String,
cardCVV: String,
validity: String,
cardNumber: String
): Boolean {
var result: Boolean = false
if (bankName.isNullOrEmpty()) {
Toast.makeText(toast, "Bank Name should not be blank", Toast.LENGTH_SHORT).show()
} else if (cardHolderName.isNullOrEmpty()) {
Toast.makeText(toast, "Card Holder Name should not be blank", Toast.LENGTH_SHORT).show()
} else if (cardNumber.isNullOrEmpty()) {
Toast.makeText(toast, "Card number should not be blank", Toast.LENGTH_SHORT).show()
} else if (cardNumber.length != 16) {
Toast.makeText(toast, "Card number 16 digits", Toast.LENGTH_SHORT).show()
} else if (validity.isNullOrEmpty()) {
Toast.makeText(toast, "Card validity should not be blank", Toast.LENGTH_SHORT).show()
} else if (cardCVV.isNullOrEmpty()) {
Toast.makeText(toast, "CVV should not be blank", Toast.LENGTH_SHORT).show()
} else if (cardCVV.length != 3) {
Toast.makeText(toast, "Must have 3 digits", Toast.LENGTH_SHORT).show()
} else {
//will do something
}
}