Сместить фокус на следующий EditText в другом элементе RecyclerView (CardView) - PullRequest
0 голосов
/ 16 октября 2018

Я использую RecyclerView для хранения нескольких CardViews, которые содержат EditText.Пользователь должен отредактировать текст и перейти к следующему CardView, нажав кнопку «продолжить / закончить» на программной клавиатуре.Пока следующий EditText сфокусирован, программная клавиатура должна оставаться открытой.Карточные изображения имеют ширину экрана телефона и должны быть прокручены горизонтально / справа налево.Мой код уже может определить нажатие кнопки «Продолжить», но я застрял в смещении фокуса.Пожалуйста, дайте мне знать, если это возможно, и если это так.Спасибо

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Я решил это.

Сначала я должен прокрутить до элемента из представления переработчика, а затем вызвать метод requestFocus() текста редактирования.Чтобы предотвратить программную клавиатуру / IME, я использовал InputMethodManager для принудительного отображения IME.

0 голосов
/ 16 октября 2018

Один из способов сделать это - добавить метод в свой класс, расширяющий RecyclerView.ViewHolder.

public static class MyViewHolder extends RecyclerView.ViewHolder {
    // each data item is just a string in this case
    public CardView mCardView;
    public EditText mEditText;
    public MyViewHolder(CardView v) {
        super(v);
        mCardView = v;
        mEditText = v.findViewById(R.id.mEditText);
    }

    public void takeFocus() {
        if (mEditText != null && mEditText.isShown()) {
            mEditText.requestFocus();
        }
    }
}

В зависимости от того, какие другие классы ViewHolder вы используете, вы, вероятно, захотите добавить некоторыеЛогика, такая как mViewHolder instanceOf MyViewHolder перед вызовом метода takeFocus ().

...