Android RecyclerView 中多Item的EditText,RadioButton,CheckBox焦点混乱,数据错乱的解决方法

最近在做项目时,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
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值