recyclerview中有edittext的处理

来源:互联网 发布:php is_string 编辑:程序博客网 时间:2024/06/05 11:53

recyclerview一般用于数据的展示,如果作为数据的填写(EditText)时往往会有很多的问题,比如获取焦点、textwatcher的添加,数据监听错乱(删除某项后)等,一开始碰到这个问题着实让我发愁,没有找到合适的处理办法。不过后来终于顺利解决。记录一下

1、首先面临的是textwatcher的重复添加问题(也是最主要的问题),想到了其实很简单,就是在viewholder中直接绑定,不要再convert方法中处理,

    public class MyViewHolder extends RecyclerView.ViewHolder{        @Bind(R.id.et_photo) EditText et;        public MyWatcher mWatcher = new MyWatcher(this);        public ImageViewHolder(View view) {            super(view);            ButterKnife.bind(this, view);            et.addTextChangedListener(mWatcher);

当然MyWatcher可以需要继承TextWatcher,一般在onTextChanged方法中做一些自定义处理,比如剩余字数监听与显示

2、对于行数过多滑动冲突问题需要在ViewHolder的EditText的setOnTouchListener监听中v.getParent().requestDisallowInterceptTouchEvent(true);

3、对于第一Edittext获取不到焦点的问题是因为EditText默认FocusableInTouchMode为false,否则第一次获取不到点击事件,需设置

et.setFocusableInTouchMode(true);et.requestFocus();
0 0