I have a listview that contains a botton in each row.
The button open a dialog for single value choice when clicked.
The thing is when I move down the list, values in the buttons are moving. The first value is repeated each 8 rows.
Here is my getView() Code :
public static class ViewHolder {
public Button listaCerrada;
}
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
try {
if (convertView == null) {
holder = new ViewHolder();
LayoutInflater vi = (LayoutInflater) ctx
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.row_lista_form, null);
holder.listaCerrada = (Button) convertView
.findViewById(R.id.listaCerrada);
}
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.listaCerrada.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Get list Values
String datoValido = metrica.getlForms().get(position)
.getProducto().getDatoValido();
AlertDialog.Builder adb = new AlertDialog.Builder(ctx);
// HAY:HAY;NO HAY:NO HAY
String[] parts = datoValido.split(";");
ArrayList<String> values = new ArrayList<String>();
for (String s : parts) {
String[] part2 = s.split(":");
values.add(part2[0]);
}
final CharSequence[] items = values
.toArray(new CharSequence[values.size()]);
adb.setSingleChoiceItems(items, 0,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.dismiss();
holder.listaCerrada.setText(items[which]);
}
});
adb.setNegativeButton("Cancelar", null);
adb.show();
}
});
} catch (Exception e) {
e.printStackTrace();
}
return convertView;
}