Cómo alternar una variable boolean en Java Android
Muchos me preguntáis cómo se puede alternar una variable boolean en Java sin tener que leer primero el contenido de la misma. En resumidas cuentas… ¿Existe la manera de alternar una variable boolean en una sola línea? La respuesta es sí, y en este artículo lo aprenderás con un sencillo ejemplo práctico. ¡Vamos allá!
Para este ejemplo vamos a utilizar una interfaz que se compone de un TextView para mostrar el estado actual de la variable, y un botón que alterne su estado.
Interfaz para el ejemplo
El código xml de la interfaz es el siguiente:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:text="Alternar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/text" />
</androidx.constraintlayout.widget.ConstraintLayout>
Alternar una variable boolean en Java en una sola línea
Saltamos ahora al archivo MainActivity del proyecto. Creamos una variable tipo boolean de nombre ‘estado’ y le asignamos un valor ‘false’. Recuperamos los objetos de la interfaz y en el evento OnClick del botón lanzaremos la siguiente línea:
estado = estado ? false : true;
Dado que una variable tipo boolean solo puede tener 2 estados (true / false), con esta línea conseguimos alternar el valor actual de la variable ‘estado’, sin necesidad de leer previamente su estado con un ‘IF’. Seguidamente tras alternar la variable volvemos a mostrar el estado en el TextView.
Código Java completo
public class MainActivity extends AppCompatActivity { private TextView textView; private Button btnAlternar; private boolean estado; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); estado = false; textView = findViewById(R.id.text); btnAlternar = findViewById(R.id.button); textView.setText("Estado: " + estado); btnAlternar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { estado = estado ? false : true; textView.setText("Estado: " + estado); } }); } }