美文网首页Android
Android RecyclerView的item中含有Edit

Android RecyclerView的item中含有Edit

作者: 可乐_JS | 来源:发表于2020-09-16 17:56 被阅读0次
今天在写RecyclerView时item里边含有一个EditText,然后在动态添加item的时候之前已经编辑过的item中的EditText中的内容各种问题(跳动,改变之类的,总之就是很难受)!
总结:因为在bind数据的时候每次都addTextChangedListener导致的,然后在notifyDataSetChanged的时候就是会多次重复走TextWatcher的回调,从而导致数据变动、跳动的问题,自己想了好久没解决最终还是度了下,解决方案也很简单(度完之后的感觉,当时自己咋就想不到呢!!!惭愧~~~),在bind中给EditText添加setOnFocusChangeListener,当item的EditText获取到焦点的时候addTextChangedListener,当失去焦点的时候removeTextChangedListener。

代码如下:

        final GuanJianCiZuETWatcher watcher = new GuanJianCiZuETWatcher(i);
        etGuanJianCiZu.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                EditText mV = (EditText) v;
                if (hasFocus) {
                    mV.addTextChangedListener(watcher);
                } else {
                    mV.removeTextChangedListener(watcher);
                }
            }
        });

相关文章

网友评论

    本文标题:Android RecyclerView的item中含有Edit

    本文链接:https://www.haomeiwen.com/subject/iujhyktx.html