将焦点转移到另一个回收器视图项 (CardView) 中的下一个编辑文本



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

一种方法是向类添加一个扩展 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 实例 MyViewHolder。

我解决了。

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

最新更新