将焦点转移到另一个RecyclerView项(CardView)中的下一个EditText

时间:2018-10-16 19:28:05

标签: android android-recyclerview android-edittext focus cardview

我正在使用RecyclerView来保存一堆CardView,其中包含EditText。用户应编辑文本并通过单击软键盘上的“继续/完成”按钮继续到下一个CardView。当下一个EditText聚焦时,软键盘应保持打开状态。卡视图与电话屏幕一样宽,需要水平/从右向左滚动。 我的代码已经可以识别单击“继续”按钮,但是我仍然无法转移焦点。 请让我知道这是否可行以及是否可行。谢谢

2 个答案:

答案 0 :(得分:0)

一种实现方法是在类中添加一个扩展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类,您可能希望在调用takeFocus()方法之前添加一些逻辑,例如mViewHolder instanceOf MyViewHolder。

答案 1 :(得分:0)

我解决了。

首先,我必须从“回收者”视图滚动到该项目,然后调用编辑文本的requestFocus()方法。 为了防止使用软键盘/ IME,我使用了InputMethodManager来强制显示IME。