cusotm listview中的文本框在滚动时丢失了内容

时间:2015-07-13 08:12:02

标签: android listview

我尝试了很多解决方案和教程,但没有一个解决了我的问题。我想实现一个可编辑的列表视图,但是当我在文本框中写入时,它的值也会复制到其他文本框,有时会滚动,有时不会滚动列表。任何帮助将不胜感激。

 @Override
 public View getView( final int position, View convertView, ViewGroup parent) {
  final   ViewHolder holder;
  if (convertView == null) {
        convertView = inflater.inflate(R.layout.productslistviewadapter, parent, false);

        holder = new ViewHolder();
        holder.tvdrCode = (TextView) convertView.findViewById(R.id.tvname);
        holder.tvDrName = (TextView) convertView.findViewById(R.id.tvprodpack);
        holder.tvterrcode= (TextView) convertView.findViewById(R.id.textView3);
        holder.caption = (EditText)convertView.findViewById(R.id.editText1);
        convertView.setTag(holder);

    } 
 else {
        holder = (ViewHolder) convertView.getTag();
    }

    Products p = prodList.get(position);
    holder.tvdrCode.setText(p.getDocCode());
    holder.tvDrName.setText(p.getDocName());
    holder.tvterrcode.setText(p.getAdr());

    holder.caption.setTag(position);
    holder.caption.setText(p.getCaption());
    int tag_position=(Integer) holder.caption.getTag();
    holder.caption.setId(tag_position); 

    holder.caption.addTextChangedListener(new TextWatcher() {

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

             final int  position2 = holder.caption.getId();
             final EditText Caption = (EditText) holder.caption;
             if(Caption.getText().toString().length()>0){
             prodList.get(position2).setCaption(Caption.getText().toString());

            }
        }

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

        @Override
        public void afterTextChanged(Editable s) {

            }

        }
    });  
        return convertView;
 } 
 static class ViewHolder {
 TextView code;
 TextView Name;
 EditText caption;
 }} 

0 个答案:

没有答案