Адаптер уведомлений Android в TextWatcher - PullRequest
0 голосов
/ 04 мая 2019

В моем приложении у меня есть RecyclerView с Edittext в каждой строке. Я использую средство просмотра текста, чтобы получить текст от пользователя и установить правильное значение во всех строках (зависит от ввода пользователя). Проблема в том, что для обновления списка после каждого ввода мне нужно вызвать notifyDataSetChanged (). Это вызывает проблему, заключающуюся в том, что после ввода первого номера в тексте редактирования, адаптер получает уведомление, и текст редактирования теряет фокус, поэтому в основном пользователь может вводить только один ввод. У вас есть идеи, как бороться с этой проблемой? Вот мой код:

    public TextWatcher getUsernameData() {
            return new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                }
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                    // Here I'm doing calculations but after first input edit text 
loses focus because of notifying adapter

                }
                @Override
                public void afterTextChanged(Editable s) {

                }
            };
        }

Как видите, я выполняю вычисления в методе onTextChanged ().

1 Ответ

1 голос
/ 04 мая 2019

Вы можете попытаться сохранить ссылку на текущий просмотр, на котором у вас есть фокус,

Затем в onBindViewHolder () вы можете идентифицировать представление, которое вы набирали, и снова запросить фокус на этом представлении, например:

yourEditText.requestFocus();
InputMethodManager inputMethodManager = 
 (InputMethodManager) 
  getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.showSoftInput(yourEditText, 
InputMethodManager.SHOW_IMPLICIT);

Или вы также можете сохранить ссылку на все View в вашем адаптере, когда установлено, тогда вместо использования notifyDataSetChanged () вы можете зациклить каждый View и установить новые данные,

Но вы должны пересмотреть свою реализацию, я не знаю, что вы пытаетесь достичь, похоже на фильтр / поиск

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...