Редактировать текст, теряя фокус после ввода чего-либо - PullRequest
0 голосов
/ 30 сентября 2018

Я надуваю редактировать текст в классе адаптера в представлении списка.View выглядит круто, несколько редактируемых текстов отображаются правильно, но когда я фокусируюсь на редактируемом тексте или пытаюсь что-то напечатать, теряю фокус, я пытался добавить слушателей, меняя файл манифеста, но у меня ничего не работает.

следующий код не работает для меня

@Override
 public View getChildView(int position, int i1, boolean b, View view, 
 ViewGroup viewGroup) {
 EditText comment = view.findViewById(R.id.txtRecordComment);

 comment.setOnFocusChangeListener(new OnFocusChangeListener() {

    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            handler.postDelayed(new Runnable() {

                @Override
                public void run() {
                    if (lastFocussedPosition == -1 || lastFocussedPosition == position) {
                        lastFocussedPosition = position;
                        edittext.requestFocus();
                    }
                }
            }, 200);

        } else {
            lastFocussedPosition = -1;
        }
    }
});

   return view;
}

, пожалуйста, помогите мне решить эту проблему

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Так как вы используете ListView, это обязательно произойдет с вашей текущей реализацией кода.

Вы должны помнить, что если ваш EditText находится в ListView, каждое нажатие клавиши приведет кредактировать текст, теряя и получая фокус, потому что все виды перерисовываются, поэтому редактируемый текст, представляющий какую-либо строку, которая была сфокусирована, теперь является совершенно другим объектом.

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

Также установите любой текст редактирования, которыйв текущемFocusedRow, чтобы быть сфокусированным.

Обновление :

Если у вас есть несколько EditText s, добавьте слушатель onFocusChanged для каждого текста редактирования.

0 голосов
/ 30 сентября 2018

Добавьте приведенный ниже код в файл манифеста Android

<activity android:name=".ActivityName"
      android:label="@string/app_name"
      android:windowSoftInputMode="adjustPan">

Надеюсь, это сработает

...