jueves, 18 de julio de 2013

Lista select con spinner en android

Acabo de necesitar hacer una lista de selección para mi aplicación en android. Como en otras ocasiones, encontré la respuesta en un blog conocido.

El primer paso consiste en crear los valores que se mostrarán. Dichos valores se almacenan en un fichero arrays.xml situado en la carpeta values.

En mi caso los valores los he referenciado a través del fichero string.xml


 

   
       @string/kanbanlist1
       @string/kanbanlist2
       @string/kanbanlist3
   
    

Después en el layout de la actividad pertinente, escribimos un "spinner" que referencia a los valores sabiendo que "entries" son las entradas del select, y "prompt" el título que muestra el popup.




Sólo nos queda recuperar el valor desde la actividad. A continuación el resultado final.


Lista select.

Popup que sale al pulsar sobre el select

Recuperación del valor:

// Recupera el valor:
Spinner spinnerKanban = (Spinner) findViewById(R.id.editTaskListNumber);
long valueSpinter = spinnerKanban.getSelectedItemId();
valueSpinter++;  // El spinner comienza en 0, pero mis comparaciones de valores en 1 :D
// Operación a realizar con el valor.

Saludos.

sábado, 13 de julio de 2013

Popup de confirmación en android, usando la clase AlertDialog

A veces necesitamos que se muestre un menú de confirmación antes de realizar una determinada acción (a menudo borrar). En android esto se hace con la clase AlertDialog.

En mi caso en concreto tengo mucho listados (ListView) en los cuales muestro una determinada información y varios botones de acción.


Listado de proyectos de aplicación. Cada ítem tiene varios botones con acciones asociadas.

Cada botón tiene asociada un método usando el valor onclick:

android:onClick="deleteProyect"

Dentro dentro de ese método se encuentra el código que muestro a continuación:


import android.app.AlertDialog;
import android.content.DialogInterface;

...

          AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
          // set title
          String alert_title = getResources().getString(R.string.alert_project_delete_title);
          String alert_description = getResources().getString(R.string.alert_project_delete_description);
    alertDialogBuilder.setTitle(alert_title);

    // set dialog message
    alertDialogBuilder
     .setMessage(alert_description)
     .setCancelable(false)
     .setPositiveButton("Yes",new DialogInterface.OnClickListener() {
      // Lo que sucede si se pulsa yes
      public void onClick(DialogInterface dialog,int id) {
       // Código propio del método borrado para ejemplo
      }
      
      
       })
     .setNegativeButton("No",new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog,int id) {
       // Si se pulsa no no hace nada
       dialog.cancel();
      }
     });
  
     // create alert dialog
     AlertDialog alertDialog = alertDialogBuilder.create();
  
     // show it
     alertDialog.show();

Y este es el resultado final:


Diálogo de confirmación antes de borrar.

Saludos

domingo, 7 de julio de 2013

Desactivando el foco (onFocus) en las vistas de android

Unas de las cosas que más me molesta de las aplicaciones android es que al cambiar de actividad, si la nueva actividad tiene campos de edición como (EditText) el foco se sitúa sobre ellos, mostrando el teclado virtual.

Navegando encontré un buen post en el que se indica como desactivar el autofocus.

Sencillo, simplemente 2 líneas en el elemento padre de la vista:

android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"

En mi opinión este detallido puede parecer una tontería, pero mejora la usabilidad de la aplicación.

Saludos.

Related Posts Plugin for WordPress, Blogger...