我正在实现一个RecyclerView
,每列包含一个EditText
,以输入一个数字。当我输入数字并单击键盘上的下一个按钮时,光标应转到下一个EditText
,并且应该聚焦。我的问题是如何在只有一个EditText的适配器中调用requestFocus()
函数
下面给出的是我在bindview内的适配器功能
outstandingItemRowHolder.adviceNote.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_GO) {
InputMethodManager imm = (InputMethodManager) POReceiptDetailsFragment.poReceiptDetailsFragment.getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
if(POReceiptDetailsFragment.poReceiptDetailsFragment != null){
//function to go to the next edittext???
}
return true;
}
return false;
}
});
当按下软键盘的下一个按钮时,谁能告诉我如何进入下一个editText框?
答案 0 :(得分:1)
如果您有下一个职位可用,那么我认为
recyclerView.scrollToPosition(position)
将焦点移到该位置上的项目,因此孩子也应该获得焦点。
PS:未经测试
答案 1 :(得分:1)
对于Enter键,请使用此代码
editText.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if (event.getAction() == KeyEvent.ACTION_DOWN
&& event.getKeyCode() == KeyEvent.KEYCODE_ENTER)
{
Log.i("event", "captured");
return false;
}
return false;
}
});
当按下回车键时,您可以将焦点更改到下一行,因为您必须将recyclerview传递给适配器,这样
public CheckoutRecyclerviewAdapter(Context context,
CartItems cartItems,Recyclerview recyclerview) {
this.context = context;
this.cartItems = cartItems;
this.recyclerview = recyclerview
}
之后,您必须将位置滚动到此代码中的下一项
if(position<size+1{recyclerview.getLayoutManager().scrollToPosition(thisposition+1)}