Android checkbox.isChecked () no funciona correctamente

Tengo un ListView en el que se muestra una checkbox en cada fila.
Cada vez que se toca la checkbox , compruebo si está comprobada o no.
Pero cada vez, el primer artículo siempre devuelve false . Sin embargo, si si marcó el segundo elemento, el método .ischecked() de la casilla de verificación del primer elemento siempre devuelve true .
Aquí está mi código :

 public class CustomSpecificCar extends ArrayAdapter<JSONObject>{ ListSpecificCars caller; private JSONObject currentJson; private CheckBox cbSelectedCar; private int position; public CustomSpecificCar(Context ctxt, List<JSONObject> list, ListSpecificCars caller){ super(ctxt, R.layout.custom_specific_car_row, list); this.caller = caller; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = LayoutInflater.from(getContext()); View customView = inflater.inflate(R.layout.custom_specific_car_row, parent, false); this.position = position; // Set the reference of the layout currentJson = getItem(this.position); cbSelectedCar = (CheckBox)customView.findViewById(R.id.cbSelectedCar); TextView tvBrand = (TextView)customView.findViewById(R.id.tvBrand); TextView tvModel = (TextView)customView.findViewById(R.id.tvModel); TextView tvOwnerEditable = (TextView)customView.findViewById(R.id.tvOwnerEditable); TextView tvPriceEditable = (TextView)customView.findViewById(R.id.tvEstimatedPriceEditable); try { tvBrand.setText(currentJson.getString("brand")); tvModel.setText(currentJson.getString("model")); tvOwnerEditable.setText(currentJson.getString("owner")); } catch (JSONException e) { Log.e(e.getClass().getName(), "JSONException", e); } cbSelectedCar.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { if (cbSelectedCar.isChecked()){ caller.updateClickedUsername(currentJson, true); // Add to the List Log.d("Added click ", "ok"); } else if (!cbSelectedCar.isChecked()) { caller.updateClickedUsername(currentJson, false); // Delete from the List Log.d("Deleted click ", "nok"); } }}); return customView; } } 

¿Qué debo hacer para resolver este problema? ¡Muchas gracias de antemano!

Debe utilizar setOnCheckedChangeListener.

Muestra:

  checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { } }); 

En su código:

  cbSelectedCar.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked){ caller.updateClickedUsername(currentJson, true); // Add to the List Log.d("Added click ", "ok"); } else if (!isChecked) { caller.updateClickedUsername(currentJson, false); // Delete from the List Log.d("Deleted click ", "nok"); } } }); 

Para usar la casilla marcada como Onclicklistener esto te ayudará

 CheckBox.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (((CheckBox) v).isChecked()) { Toast.makeText(this, "CheckBox is checked", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "CheckBox is not checked", Toast.LENGTH_SHORT).show(); } }); 
  • Desarrollo / implementación de Linux para Samsung Galaxy S3
  • Ampliar el teclado virtual de Android
  • Libgdx y la aplicación android. Imagen como fondo
  • Tipo no coincidente: no se puede convertir de StringBuilder a String
  • Cómo conseguirPackageManager en fragmento de Android
  • La generación de grados falla para la excepción de host desconocido
  • Volátil y sinchonizado en AsyncTask
  • Java Threading Error IllegalThreadState hilo ya iniciado
  • Android M permiso de la prueba READ_PHONE_STATE (permisos peligrosos)
  • Android CookieManager
  • Galería circular de Android o lista con zoom en y fuera de la opción
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.