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!
- ¿Cómo probar características de hardware específicas con Robolectric en android?
- ¿Cómo puede hacer que el reconocimiento de voz del soporte para el emulador android
- Unsatisfiedlinkerror con la actualización de Android 5.0.1
- El uso de MultiDex en Android App ejecuta ProGuard dos veces y sólo segunda vez con Advertencias / Notas?
- GetGSMSignalStrength () devuelve siempre 99
- no llamar a través de super.oncreate y estoy seguro de que añadió thet super.oncreate
- Eclipse salta líneas mientras depura
- No se puede mostrar el hash correcto en Java. ¿Qué está mal?
- ¿La lectura de la altitud del barómetro Android es incorrecta?
- GLES2.0: Usar GL_TEXTURE_EXTERNAL_OES a través de glEGLImageTargetTexture2DOES
- ¿Cómo se hacen los widgets personalizados?
- Seguridad de subprocesos al realizar iteraciones a través de un ArrayList utilizando foreach
- Guardar en SharedPreferences desde DialogPreference personalizado
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(); } });
- ¿Es posible en Android enviar SMS, correo electrónico y hacer una llamada telefónica al presionar el botón Inicio?
- Cómo obtener la matriz de cadena de xml a archivo de java de fragmento?