RecyclerView-当适配器具有StableIds时,setOnFocusListener行为异常

时间:2018-11-15 09:30:30

标签: android android-recyclerview

我正在将RecyclerView与自定义适配器一起使用,并且允许用户在展开项目时编辑这些项目。 我将onFocusChangeListener设置在EditText上,当失去焦点时(通过取消展开项目或展开另一个项目来使其保持焦点),然后保存EditText的内容。

在我为RecyclerView实施stableIds之前,这工作得很好。现在,当失去焦点时,用户的输入也将丢失,因此无法保存任何内容。

让我通过示例进行演示。

holder.hiddenEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (holder.hiddenEditText.getText().length()>0){
                    myList.get(holder.getAdapterPosition()).setName(holder.hiddenEditText.getText().toString());

                    holder.hiddenEditText.setText(holder.hiddenEditText.getText().toString());
                    Log.d(TAG,"The contents of hiddenEditText: "+holder.skrytyNazev.getText().toString());
                }
            }
        });

为更好地说明问题,如果稳定ID为false,则此Log.d从输入返回实际的编辑值。但是,如果为true,则它将在用户开始编辑输入之前返回该值。 因此,如果我点击以编辑EditText,则编写一些内容,它将在编辑之前返回该值。

0 个答案:

没有答案