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

来源:互联网 发布:js中alert的用法 编辑:程序博客网 时间:2024/05/01 03:45

最近工作需要,做了类似于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.csdn.net/detail/qq_31303013/9747999

0 0