最近在做项目时,UI设计师给了一个设计图,添加多个人的信息时,item里面包含了EditText在填写姓名时出现数据混乱,如下图所示:
RecyclerView中EditText的监听处理
这个界面的主要逻辑是监听每个EditText的输入,然后保存到个人对象里,最后保存到服务器上。RecyclerView中Item里EditText的监听可以按如下代码实现:
首先定义个回调接口:
public interface OnTextChangeListener{
void onClickItem(int position,EditTextBean bean);
}
在自定义Adapter中添加一个如上自定义的接口成员变量mTextListener,然后在onBindViewHolder方法里面添加Item的EditText输入监听,即EditText.addTextChangedListener(),然后在监听事件回调里的afterTextChanged 方法中 调用 mTextListener.onClickItem来达到接口回调的目的。
自定义EditListAdapter类:
/**
* Created by ysp
* on 2020/12/22
*/
public class EditListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context mContext;
private LayoutInflater mInflater;
private ArrayList<EditTextBean> mList;
private OnTextChangeListener mTextListener;
public EditListAdapter(Context mContext, ArrayList<EditTextBean> mList) {
this.mContext = mContext;
mInflater=LayoutInflater.from(mContext);
this.mList = mList;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view=mInflater.inflate(R.layout.item_edittext_refresh,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) {
ViewHolder viewHolder= (ViewHolder) holder;
if (mList.size()<=0){
return;
}
final EditTextBean editTextBean = mList.get(position);
viewHolder.tv_title.setText(editTextBean.getTitle());
viewHolder.et_content.setText(editTextBean.getContent());
viewHolder.et_content.setHint("请填写");
//添加EditText的监听事件
viewHolder.et_content.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSe