Как сохранить содержимое EditText в RecyclerView

Вы отметили свой вопрос для 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 $ передаются из вашей учетной записи в мою.

0
задан Mike B. 6 March 2019 в 18:31
поделиться

1 ответ

Попытайтесь удалить 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();
}

Надеюсь, это понятно

0
ответ дан Skizo-ozᴉʞS 6 March 2019 в 18:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: