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; } } }

Rispondi quotando