Ciao a tutti,
ho un problema con una listview con customadapter dove ogni row contiene una checkbox e un edittext.

il problema è nell'edittext, qualcosa mi sfugge.
in pratica scrollando la lista non perde la posizione.


questo è il customAdapter che sto utilizzando al momento.

quale potrebbe essere il problema della perdita di posizione?

codice:
public class CustomAdapter extends ArrayAdapter<Articolo>{
	
    public CustomAdapter(Context context, int textViewResourceId, List list) {
        super(context, textViewResourceId, list);
    }
    
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        return getViewOptimize(position, convertView, parent);
    }
    
    public View getViewOptimize(int position, View convertView, ViewGroup parent) {
    	//articoli da visualizzare
    	final Articolo a = getItem(position);
    	
		TextView codice;
	    TextView marca;
	    TextView prezzo;
	    CheckBox checkbox;
	    EditText quanti;
		
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.buy_row_prodotto, null);
            
            // Find the child views.
            checkbox= (CheckBox)convertView.findViewById(R.id.checkBox1);
            codice = (TextView)convertView.findViewById(R.id.codice);
            marca = (TextView)convertView.findViewById(R.id.marchio);
            prezzo = (TextView)convertView.findViewById(R.id.prezzo);
            quanti = (EditText)convertView.findViewById(R.id.quantita);
            // Optimization: Tag the row with it's child views, so we don't
         	// have to
         	// call findViewById() later when we reuse the row.            
            convertView.setTag(new ViewHolder(codice, marca, prezzo, quanti, checkbox));
            
			// If CheckBox is toggled, update the planet it is tagged with.
			checkbox.setOnClickListener(new View.OnClickListener() {
				public void onClick(View v) {
					CheckBox cb = (CheckBox) v;
					Articolo a = (Articolo) cb.getTag();
					a.setChecked(cb.isChecked());					
				}
			});	
						
			quanti.setOnFocusChangeListener(new OnFocusChangeListener() { 
				
				public void onFocusChange(View v, boolean hasFocus) {                    
                       
						final int position = v.getId();                        
						final EditText Quanti = (EditText) v;                        
						a.setQuanti(Quanti.getText().toString());                   
					              
				}            
			});
			
			
        } else {
        	// Because we use a ViewHolder, we avoid having to call
        	// findViewById().
        	ViewHolder viewHolder = (ViewHolder) convertView.getTag();
        	checkbox = viewHolder.getCheckBox();
        	codice = viewHolder.getCodice();
        	marca = viewHolder.getMarca();
        	prezzo = viewHolder.getPrezzo();
        	quanti = viewHolder.getQuantita();
        }
        
        // Tag the CheckBox with the Planet it is displaying, so that we can
     	// access the planet in onClick() when the CheckBox is toggled.
     	checkbox.setTag(a);
     	// Display planet data
     	checkbox.setChecked(a.isChecked());
     	codice.setText(a.getCodice()+" - "+a.getDesweb());
        marca.setText(a.getMarca()+" - "+a.getUnimis()+" - Ultima giac.:"+a.getQttgia());
        prezzo.setText(a.getPrezzo()+" € ");
        
        //Fill EditText with the value you have in data source            
		quanti.setText(a.getQuanti());            

     	return convertView;
    }
    
    
    private class ViewHolder {
        public TextView codice;
        public TextView marca;
        public TextView prezzo;
        public EditText quantita;
        public CheckBox checkbox;
        
        public ViewHolder(){}
        
		public ViewHolder(TextView codice, TextView marca, TextView prezzo, EditText quantita, CheckBox checkbox) {
	        this.codice = codice;
	        this.marca = marca;	        
	        this.prezzo = prezzo;	
	        this.quantita= quantita;
	        this.checkbox = checkbox;
	    }

		public CheckBox getCheckBox() {
			return checkbox;
		}

		public void setCheckBox(CheckBox checkBox) {
			this.checkbox = checkBox;
		}

		public TextView getCodice() {
	        return codice;
	    }
	    public void setCodice(TextView codice) {
	        this.codice = codice;
	    }
	    
	    public TextView getMarca() {
	        return marca;
	    }
	    public void setMarca(TextView marca) {
	        this.marca = marca;
	    }
	        
	    public TextView getPrezzo() {
	        return prezzo;
	    }
	    public void setPrezzo(TextView prezzo) {
	        this.prezzo = prezzo;
	    }
	    
	    public EditText getQuantita() {
	        return quantita;
	    }
	    public void setQuantita(EditText quantita) {
	        this.quantita = quantita;
	    }
    }


}