如何在recyclerview中requestFocus editText?
How to requestFocus editText on recycler view?
我正在实施一个 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;
}
});
谁能告诉我单击软键盘下一步按钮时如何转到下一个编辑文本框?
如果您有下一个项目位置,那么我认为
recyclerView.scrollToPosition(position)
会将焦点转移到该位置的项目,因此 children 也应该获得焦点。
PS:未测试
对于输入按键使用此代码
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;
}
});
当按下 enter 键时,您可以将焦点更改到下一行,为此您必须将 recyclerview 传递给适配器 liek this
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)}
我正在实施一个 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;
}
});
谁能告诉我单击软键盘下一步按钮时如何转到下一个编辑文本框?
如果您有下一个项目位置,那么我认为
recyclerView.scrollToPosition(position)
会将焦点转移到该位置的项目,因此 children 也应该获得焦点。
PS:未测试
对于输入按键使用此代码
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;
}
});
当按下 enter 键时,您可以将焦点更改到下一行,为此您必须将 recyclerview 传递给适配器 liek this
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)}