Android 将焦点转移到另一个RecyclerView项目(CardView)中的下一个编辑文本

Android 将焦点转移到另一个RecyclerView项目(CardView)中的下一个编辑文本,android,android-recyclerview,android-edittext,focus,cardview,Android,Android Recyclerview,Android Edittext,Focus,Cardview,我使用一个RecyclerView来保存一堆CardView,其中包含一个EditText。用户应通过单击软键盘上的“继续/完成”按钮编辑文本并继续下一个CardView。当下一个编辑文本聚焦时,软键盘应保持打开状态。卡片视图与手机屏幕一样宽,需要水平/从右向左滚动。 我的代码已经可以识别“继续”按钮的点击,但我无法转移焦点。 请让我知道这是否可能,如果是如何。谢谢一种方法是向类中添加一个扩展RecyclerView.ViewHolder的方法 public static class MyVie

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

一种方法是向类中添加一个扩展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()方法之前添加一些逻辑,例如MyViewHolder的mViewHolder实例。

我解决了这个问题

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