public class EditHodler extends RecyclerView.ViewHolder {
private EditText et;
public EditHodler(View itemView) {
super(itemView);
et = (EditText) itemView.findViewById(R.id.et);
et.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (et.getLineCount() > 4) {
/*告诉父组件不要拦截他的触摸事件*/
v.getParent().requestDisallowInterceptTouchEvent(true);
}
return false;
}
});
}
//onBindViewHolder里面调用
public void initView(final int position) {
if (datas == null || datas.isEmpty()) {
return;
}
TextWatcher lastTextWatcher = (TextWatcher) et.getTag();
if (lastTextWatcher != null) {
et.removeTextChangedListener(lastTextWatcher);
}
final Item entity = datas.get(position);
et.setText(entity.getDesc());
InputFilter[] inputFilters = new InputFilter[]{InputFilterUtil.getInputFilter(context, 100)};
et.setFilters(inputFilters);
TextWatcher textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
entity.setDesc(s.toString());
}
};
et.addTextChangedListener(textWatcher);
et.setTag(textWatcher);
}
}
如果你调用了:viewHolder.setIsRecyclable(false);那么这个Item的onViewRecycled将永远不会调用。
holder.editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
holder.editText.setSelection(holder.editText.getText().length());
//保存当前获取到焦点的位置和控件对象
currentFocusPosition = position;
onFocusEdit = holder.editText;
} else {
//失去焦点的时候保存当前的修改内容
holder.editText.setText(holder.editText.getText());
}
}
});