zoukankan      html  css  js  c++  java
  • Android-------ListView列表中获取EditText输入的值

    最近项目的购物车中用列表中包含了留言功能, 需要获取EditText输入的内容,当购买多件商品时,就有点棘手了。

    经过查资料解决了这个功能,并写了一个案例;

       效果图:

        

     可以在商品数据用一个字段来管理留言数据,这样就可以方便的操作了。

     代码:

    public class MainActivity extends AppCompatActivity {
    
        ListView listView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initView();
        }
    
        private void initView(){
            listView=(ListView)findViewById(R.id.listview);
            listView.setAdapter(new ListAdapter(this));
        }
        public void saveEditData(int position, String str) {
            Toast.makeText(this,str+"----"+position,Toast.LENGTH_LONG).show();
        }
    }

    Adapter

    public class ListAdapter extends BaseAdapter {
    
    
        Context context;
        LayoutInflater inflater;
        String[] strings=new String[]{"商品1","商品2","商品3"};
        public ListAdapter(Context context) {
            this.inflater=LayoutInflater.from(context);
            this.context=context;
        }
    
        @Override
        public int getCount() {
            return 3;
        }
    
        @Override
        public Object getItem(int position) {
            return strings[position];
        }
    
        @Override
        public long getItemId(int position) {
            return position;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder;
            if (null == convertView){
                convertView = inflater.inflate(R.layout.item_multiple_confirm,null);
                holder =new ViewHolder(convertView,position);
                convertView.setTag(holder);
            }else {
                holder = (ViewHolder) convertView.getTag();
            }
            holder.tv_name.setText(getItem(position).toString());
            return convertView;
        }
    
        class ViewHolder{
            TextView tv_name;
            EditText editText;
            public ViewHolder(View view,int pisition){
                tv_name = (TextView) view.findViewById(R.id.fill_order_name);
                editText= (EditText) view.findViewById(R.id.fill_order_ltext);
                editText.setTag(pisition);//存tag值
                editText.addTextChangedListener(new TextSwitcher(this));
            }
        }
    
        class TextSwitcher implements TextWatcher {
            private ViewHolder mHolder;
    
            public TextSwitcher(ViewHolder mHolder) {
                this.mHolder = mHolder;
            }
    
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
            }
    
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                int position = (int) mHolder.editText.getTag();//取tag值
                ((MainActivity)context).saveEditData(position, s.toString());
            }
    
            @Override
            public void afterTextChanged(Editable s) {
    
            }
        }
    
    }

    代码是写的比较简单源码点击下载

  • 相关阅读:
    快速删除段落间多余的空行
    平时一些mysql小技巧及常识
    mysql中常用的控制流函数
    按年、季度、月分组&&计算日期和时间的函数
    Excel通过身份证获取出生年月,性别,年龄,生肖,星座,省份等信息总结归纳
    统计图表类型选择应用总结&表数据挖掘方法及应用
    EXCEL如何提取文字中包含的数字?
    一篇说尽Excel常见函数用法
    RStudio中,出现中文乱码问题的解决方案
    R-RMySQL包介绍学习
  • 原文地址:https://www.cnblogs.com/zhangqie/p/7526853.html
Copyright © 2011-2022 走看看