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();