如何将setOnFocusChangeListener与RecyclerView一起使用?

时间:2017-11-11 19:34:31

标签: android android-recyclerview

我在RecyclerView的适配器类中的onBindViewHolder()上有以下内容:

holder.answerEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                @Override
                public void onFocusChange(View v, boolean hasFocus) {
                    if(!hasFocus){

                        String answer = holder.answerEditText.getText().toString();

                        mDatasetAnswers.add(answer);

                    }
                }
            });

以上只返回来自recyclerview中第一个editText的输入。我能做错什么? 我希望它从recyclerview中的所有EditTexts返回文本。

2 个答案:

答案 0 :(得分:0)

尝试添加以下行:

holder.answerEditText.setFocusable(true);
holder.answerEditText.setFocusableInTouchMode(true);

使用这些线条可确保组件可以捕获焦点。

答案 1 :(得分:0)

这是因为一旦您点击了Recyclerview中的任何编辑框,弹出键盘,因为调用onbindview并且焦点更改为recyclerview中的第一个框,因为所有行都会再次重新充气。

因此,监视焦点增益并在键盘弹出之前先做你的事情。希望这会有所帮助。