Вы отметили свой вопрос для SQL (generic), MySQL и Access, и каждый «вкус» SQL может иметь свой собственный специфический синтаксис (проверьте соответствующую документацию, например, для MySQL смотрите здесь ). Тем не менее, общий пример будет
START TRANSACTION;
UPDATE BankAccount SET Balance=Balance-5 WHERE Owner='James';
UPDATE BankAccount SET Balance=Balance+5 WHERE Owner='Gord';
COMMIT;
Если второй оператор UPDATE терпит неудачу, вся транзакция «откатывается», и оба остатка на счете остаются неизменными. Только если оба UPDATES преуспевают, то 5 $ передаются из вашей учетной записи в мою.
Попытайтесь удалить TextWatcher
за пределами ViewHolder
, это очень плохой выбор, поместив его туда.
Создайте класс для этого, например:
private class EditTextTextWatcher implements TextWatcher {
private int posicion;
private List<Eventos> listaEventos;
public void updatePosicionYTexto(int posicion, List<Eventos> listaEventos) {
this.listaEventos = listaEventos;
this.posicion = posicion;
}
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
listaEventos.get(posicion).setEvento(charSequence.toString());
}
@Override
public void afterTextChanged(Editable editable) {
}
}
Затем, когда вы хотите написать заметку, вы делаете:
viewHolder.editTextTextWatcher.updatePosicionYTexto(viewHolder.getAdapterPosition(),listaEventos);
Внутри вашего ViewHolder
вы создаете эти два методы, вы должны отправить new EditTextTextWatcher()
в качестве параметра вашему ViewHolder
и создать экземпляр EditTextTextWatcher
внутри, например:
public EditTextTextWatcher editTextTextWatcher;
, а затем добавить эти методы:
void enableTextWatcher() {
evento.addTextChangedListener(EditTextTextWatcher);
}
void disableTextWatcher() {
evento.removeTextChangedListener(EditTextTextWatcher);
}
[ 1117] И не забудьте добавить эти методы в свои ViewHolder
@Override
public void onViewAttachedToWindow(@NonNull RecyclerView.ViewHolder holder) {
((ViewHolder) holder).enableTextWatcher();
}
@Override
public void onViewDetachedFromWindow(@NonNull RecyclerView.ViewHolder holder) {
((ViewHolder) holder).disableTextWatcher();
}
Надеюсь, это понятно