listView中嵌套EditText,动态获取EditText中的值

本文介绍了一种在Android ListView中嵌套EditText的方法,并通过TextWatcher监听EditText的变化来动态获取其值。具体实现了类似QQ群投票的功能,包括如何保存EditText中的数据及移除选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近工作需要,做了类似于qq群投票的功能,整理了一下关于listView中嵌套EditText,动态获取EditText中的值。

最重要的就是TextWatch的使用。

@Override
    public View getView(final int position, View convertView, ViewGroup parent) {

        final ViewHolder holder;
        if (convertView==null){
            holder=new ViewHolder();
            convertView =  LayoutInflater.from(context).inflate(R.layout.option_item, parent, false);;
            holder.editOptions= (EditText) convertView.findViewById(R.id.editOption);
            holder.btnDelete= (TextView) convertView.findViewById(R.id.btnDelete);
            holder.layoutOption=convertView.findViewById(R.id.layoutOption);
            holder.editOptions.setTag(position);
            class MyTextWatcher implements TextWatcher {
                public MyTextWatcher(ViewHolder holder) {
                    mHolder = holder;
                }

                private ViewHolder mHolder;

                @Override
                public void onTextChanged(CharSequence s, int start,
                                          int before, int count) {
                }

                @Override
                public void beforeTextChanged(CharSequence s, int start,
                                              int count, int after) {
                }

                @Override
                public void afterTextChanged(Editable s) {
                    if (s != null ) {
                        int position = (Integer) mHolder.editOptions.getTag();
                        mData.get(position).setText(s.toString());// 当EditText数据发生改变的时候存到data变量中
                    }
                }
            }
            holder.editOptions.addTextChangedListener(new MyTextWatcher(holder));
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
            holder.editOptions.setTag(position);
        }

        final  Option option=mData.get(position);



        holder.editOptions.setText(option.getText());
        holder.editOptions.setHint(option.hint);



        if(position<2){
            holder.btnDelete.setVisibility(View.GONE);
        }else{
            holder.btnDelete.setVisibility(View.VISIBLE);
        }

        holder.btnDelete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Log.d("TEST", "remove:" + mData.get(position).getText());

                mData.remove(position);
                notifyDataSetChanged();

            }
        });


        return convertView;
    }

       demo 下载

    http://download.youkuaiyun.com/detail/qq_31303013/9747999

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值