Так как вы используете ListView
, это обязательно произойдет с вашей текущей реализацией кода.
Вы должны помнить, что если ваш EditText
находится в ListView, каждое нажатие клавиши приведет кредактировать текст, теряя и получая фокус, потому что все виды перерисовываются, поэтому редактируемый текст, представляющий какую-либо строку, которая была сфокусирована, теперь является совершенно другим объектом.
Чтобы получить ожидаемое поведение, объявите переменную в вашем адаптере:int focusedRow
.В методе getView
вашего адаптера добавьте прослушиватель onFocusChanged в EditText, и когда этот текст редактирования получит фокус, установите focusRow = любую строку, в которой находится фокусированный EditText.
Также установите любой текст редактирования, которыйв текущемFocusedRow, чтобы быть сфокусированным.
Обновление :
Если у вас есть несколько EditText
s, добавьте слушатель onFocusChanged для каждого текста редактирования.