为了账号安全,请及时绑定邮箱和手机立即绑定

在 Android TextWatcher 中汇总 EditText 值

在 Android TextWatcher 中汇总 EditText 值

慕运维8079593 2022-10-07 16:26:35
图片我有一个RecyclerView动态创建的字段。为了保存存储的数据,我使用了 TextWatcher。但我不知道如何总结 EditText -Cost 中的值并在屏幕底部的 TextView 中显示该值public class ItemsAdapter extendsListAdapter<Item,ItemsAdapter.ViewHolder> {        private List<Item> mItems=new ArrayList<>();        public static final DiffUtil.ItemCallback<Item>DIFF_CALLBACK=                new DiffUtil.ItemCallback<Item>() {                    @Override                    public boolean areItemsTheSame( Item oldItem, Item newItem) {                        return oldItem.getId()==newItem.getId();                    }                    @Override                    public boolean areContentsTheSame(Item oldItem, Item newItem) {                        return(oldItem.getName()==newItem.getName()&&oldItem.getCost()==newItem.getCost());                    }                };        public ItemsAdapter(){super(DIFF_CALLBACK);}        public void addMorreItems(List<Item> newItems){            int insertionPosition=mItems.size();            mItems.addAll(newItems);            notifyItemRangeInserted(insertionPosition,newItems.size());            submitList(mItems);        }        @Override        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){            Context context=parent.getContext();            LayoutInflater inflater=LayoutInflater.from(context);            View itemView=inflater.inflate(R.layout.custom_edittext_layout,parent,false);            ViewHolder viewHolder=new ViewHolder(itemView);            return viewHolder;        }        @Override        public void onBindViewHolder(ViewHolder viewHolder,int position){            viewHolder.editTextName.setText(mItems.get(position).getName());            viewHolder.editTextCost3.setText(mItems.get(position).getCost());            Item item=getItem(position);            EditText editText=viewHolder.editTextName;            editText.setText(item.getName());            EditText editText1=viewHolder.editTextCost3;            editText1.setText(item.getCost());        }
查看完整描述

1 回答

?
www说

TA贡献1775条经验 获得超8个赞

为持有 TextView的Activity/添加回调以获取总成本:Fragment

interface OnCostChangeListener {

  void onChange(List<Item> list);

}

实现它:

class MyActivity extends AppCompatActivity implements OnCostChangeListener {

//...

  @Override  

  public void onChange(List<Item> list) {

    int sum = 0;

    for (Item it : list) {

      sum += it.getCost();

    }


    ((TextView) findViewById(R.id.totalCost)).setText(String.valueOf(sum));

  }

//...

}

订阅适配器:

private OnCostChangeListener mListener;

public ItemsAdapter(OnCostChangeListener listener){

  super(DIFF_CALLBACK);

  this.mListener = listener;

}

并在以下位置使用侦听器TextWatcher:


editTextCost3.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) {

                    mItems.get(getAdapterPosition()).setmCost(editTextCost3.getText().toString());

                    if (mListener != null) {

                      mListener.onChange(mItems);

                    }

                }


                @Override

                public void afterTextChanged(Editable s) {


                }

            });

升级版。它应该cost存储Item为数字(整数,在示例中),而不是字符串


查看完整回答
反对 回复 2022-10-07
  • 1 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信