微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Recyclerview中更改Edittext的IME选项

如何解决在Recyclerview中更改Edittext的IME选项

我正在使用Learning应用程序,它具有Tabview,因此我正在使用Fragments。 最后一个片段在顶部具有按钮,可在多个级别之间导航。在它下面是一个Recyclerview,其中包含Cardview,在Cardview的左边有一个Question,在右边有一个Edittext来回答。 目前,IME选项是actionSend,我不仅要跳到下一个Edittext,还要评估给出的答案。我已经通过实现OnClickListener实现了这一点,但是必须单击Recyclerview中的每个Cardview以获得反馈,这很烦人,因此我想将其复制到Editext的setonEditorActionListener函数中。我遇到的问题是,我不知道如何在Recyclerview中获取当前Cardview项的位置(用问题列表中的相应项评估给定的Answer,而不用更改Editext来实际点击它)。

private RecyclerView myrecyclerview;
private ArrayList<Question> QuestionList;
private QuestionAdapter recyclerAdapter;
private EditText givenAnswer;

public void ClickManager(final ArrayList<Question> list){
        //works perfectly when the item is clicked
        recyclerAdapter.setonItemClickListener(new QuestionAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(final int position) {
                View itemView = myrecyclerview.getLayoutManager().findViewByPosition(position);
                final EditText givenAnswer = itemView.findViewById(R.id.answer);
                ClickEvaluation(list,givenAnswer,position);
            }
        });

        givenAnswer.setonEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView textView,int i,KeyEvent keyEvent) {
                boolean handled = false;
                if (i == EditorInfo.IME_ACTION_SEND){
                    ClickEvaluation(list,position); //can't access any position
                    handled = true;
                }

                return handled;
            }
        });
    }

评估功能

public void ClickEvaluation(final ArrayList<Question> list,EditText givenAnswer,int position){

    Question currenQuestion = list.get(position);
    if (currenQuestion.correct(givenAnswer.getText().toString())){
        currenQuestion.gaveCorrectAnswer();
        score += 1;
        current.setText(String.format("%d",score));
    }else{
        currenQuestion.showCorrectAnswer();
    }
    givenAnswer.setText("");
    recyclerAdapter.notifyItemChanged(position);
}

非常感谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。