listview item中通过点击item的按钮增加一行,可无限增加在同一item中

解决方案 »

  1.   

    通过集合添加,点击一次按钮add一次
      

  2.   

    添加后记得adapter.notifyDataSetChanged();
      

  3.   

    出现了点击按钮后,数据显示错乱的问题,例如点击第一个item中的按钮,但数据显示在第某个item中了,而且滑动会导致数据错乱。
      

  4.   

        private class CreatShelfTaskAdapter extends BaseAdapter {
            private final FuncDetailActivity context;
            private ArrayList<ShelfTaskBean> dataList;
            ViewHolder holder=null;        public CreatShelfTaskAdapter(FuncDetailActivity context) {
                this.context=context;
                initListData();
            }        private void initListData() {
                dataList=new ArrayList<ShelfTaskBean>();
                for (int i = 0; i < 10; i++) {
                    ShelfTaskBean ShelfTaskBean = new ShelfTaskBean();
                    ShelfTaskBean.setName("荣耀8");
                    ShelfTaskBean.setBhao(0);
                    ShelfTaskBean.setTma(0);
                    ShelfTaskBean.setSl(1);
                    ShelfTaskBean.setUp_loc(0);
                    ShelfTaskBean.setUp_sl(0);
                    dataList.add(ShelfTaskBean);
                }        }        @Override
            public int getCount() {
                return dataList.size();
            }        @Override
            public ShelfTaskBean getItem(int position) {
                return dataList.get(position);
            }        @Override
            public long getItemId(int position) {
                return position;
            }        @Override
            public View getView(final int position, View convertView, ViewGroup parent) {            if(convertView==null){
                    convertView=View.inflate(mContext,R.layout.item_create_task,null);
                    holder=new ViewHolder();
                    holder.tvName = (TextView)convertView.findViewById( R.id.tv_name );
                    holder.tvBhao = (TextView)convertView.findViewById( R.id.tv_bhao);
                    holder.tvTma = (TextView)convertView.findViewById( R.id.tv_tma);
                    holder.tvSl = (TextView)convertView.findViewById( R.id.tv_sl );
                    holder. etUploc = (EditText)convertView.findViewById( R.id.et_up_loc );
                    holder.etUpsl = (EditText)convertView.findViewById( R.id.et_up_sl);
                    holder.task_ll=(LinearLayout)convertView.findViewById(R.id.task_ll);
                    holder.btn_spit= (Button) convertView.findViewById(R.id.btn_spit);
                    convertView.setTag(holder);
                }else{
                    holder= (ViewHolder) convertView.getTag();
                }
                ShelfTaskBean bean = dataList.get(position);            holder.tvName.setText("名称:"+bean.getName());
                holder.tvBhao.setText("商品条码:"+bean.getBhao());
                holder.tvTma.setText("商品编号:"+bean.getTma());
                holder.tvSl.setText("扫描数量:"+bean.getSl());
                holder.btn_spit.setTag(position);
                holder.btn_spit.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        v.getTag();
                        if (position==(int)holder.btn_spit.getTag(position)){
                            initLinearLayout();
                        }                }
                });            return convertView;
            }
            private void initLinearLayout(){
                LinearLayout linearLayout=new LinearLayout(mContext);
                LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT,1);
                linearLayout.setOrientation(LinearLayout.HORIZONTAL);
                TextView textView=new TextView(mContext);
                textView.setText("上货位号:");
                textView.setTextSize(15);
                textView.setTextColor(Color.parseColor("#000000"));
                textView.setLayoutParams(new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT,2));
                TextView textView1=new TextView(mContext);
                textView1.setText("上货数量:");
                textView1.setTextSize(15);
                textView1.setTextColor(Color.parseColor("#000000"));
                textView1.setLayoutParams(new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT,2));
                EditText editText=new EditText(mContext);
                editText.setText("11");
                editText.setTextSize(15);
                editText.setTextColor(Color.parseColor("#000000"));
                editText.setLayoutParams(new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT,2));
                EditText editText1=new EditText(mContext);
                editText1.setText("22");
                editText1.setTextSize(15);
                editText1.setTextColor(Color.parseColor("#000000"));
                editText1.setLayoutParams(new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT,2));
                Button button=new Button(mContext);
                button.setText("删除");
                button.setTextSize(13);
                button.setLayoutParams(new LinearLayout.LayoutParams(30, ViewGroup.LayoutParams.WRAP_CONTENT,1));
                linearLayout.addView(textView);
                linearLayout.addView(editText);
                linearLayout.addView(textView1);
                linearLayout.addView(editText1);
                linearLayout.addView(button);
                holder.task_ll.addView(linearLayout);        }
        }
        static class ViewHolder{
            TextView tvName;
            TextView tvBhao;
            TextView tvTma;
            TextView tvSl;
            EditText etUploc;
            EditText etUpsl;
            Button btn_spit;
            Button btn_delete;
            LinearLayout task_ll;
            LinearLayout spit_ll;
        }
    }就这样   数据显示错乱了,怎么解决