andorid 在列表Adapter中edittext使用TextWatcher导致数据错乱问题

andorid 在列表Adapter中edittext使用TextWatcher导致数据错乱问题

这里使用的是RecyclerView使用BaseQuickAdapter

EditText et_money=helper.getView(R.id.et_money);
 if (et_money.getTag() instanceof TextWatcher){
            et_money.removeTextChangedListener((TextWatcher) et_money.getTag());
 }
  et_money.setText(item.getMoney()+"");
  TextWatcher moneyTextWatcher=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) {
                if (!TextUtils.isEmpty(s.toString())){
                    item.setMoney(s.toString());
                }
            }
        };

        et_money.addTextChangedListener(moneyTextWatcher);
        et_money.setTag(moneyTextWatcher);

注意:editText赋值一定要在TextWatcher之前

Android StudioEditText是一个用于在Android应用接收用户输入的界面组件。它允许用户在应用输入文本信息,比如搜索框、用户名输入框、密码输入框等。EditText组件支持各种属性和方法,用于定制和控制用户输入的行为和外观。 在Android布局文件,通常会在XML这样声明一个EditText: ```xml <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入文本" android:inputType="text" /> ``` 在上面的例子,定义了一个具有`match_parent`宽度和`wrap_content`高度的EditText,`hint`属性设置了占位符文本,告诉用户在这里输入什么,而`inputType`属性定义了输入的类型(这里是纯文本)。 在Java代码,可以这样使用EditText: ```java EditText editText = findViewById(R.id.editText); editText.setText("初始文本"); editText.addTextChangedListener(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) { // 输入变化后的处理 } }); ``` 在上述代码,通过`findViewById`方法获取了布局文件定义的EditText实例,并设置了一些基础操作,如设置初始文本和添加文本变化监听器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值