如何在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)}