2011-03-09 15 views
16

Hola,
Estoy trabajando en una sencilla aplicación de navegador de archivos. Tengo la mayor parte de ella configurada (donde se enumera todo en los diferentes directorios y lo que no), pero lo que estoy atascado en este momento (trabajó en él durante unas horas) es cuando se selecciona un elemento de la lista, quiero tener un cuadro de diálogo personalizado aparece. Encontré este código en la página de desarrollo de Android y lo modifiqué ligeramente. Actualmente solo brinda un brindis por lo que se seleccionó, pero necesito que los tres elementos estén separados. Es decir, me gustaría hacer algo más que un brindis y hacer que cada selección ejecute comandos diferentes. Aquí está mi código actualDiálogo de lista personalizada de Android

final CharSequence[] items = {"Info", "Rename", "Delete"}; 

    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("Options for " + file.getName()); 
    builder.setItems(items, new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int item) { 
      Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show(); 
     } 
    }).show(); 

Gracias a cualquiera que pueda ayudarme solo sepárelo. He intentado algunas variaciones diferentes de sentencias if y qué no, pero todo lo que he probado ha fallado.

Respuesta

11

El entero artículo que usted recibe es el índice de la matriz CharSequence que contiene sus acciones, por lo que para obtener la acción que fue seleccionado que podría hacer así (dentro de su método onClick):

if (item == 0) 
{ 
    // Info item 
} 
else if (item == 1) 
{ 
    // Rename, and so one 

O podría hacer como esto:

if (items[item].equals("Info")) 
{ 
    // Info item 
} 
else if (items[item].equals("Rename") 
{ 
    // Rename, and so one 
} 

sin embargo, el primer método es preferido

+0

Muchísimas gracias estaba bastante cerca yo estaba usando el código que se parecía a la segunda, pero en lugar de como "Info" y "Cambiar nombre" Tenía 0 y 1 lol así que tuve como una mezcla de los dos de todos modos, gracias una tonelada funcionó perfectamente – user577732

1

Un poco tarde, pero esto puede ayudar. Lo estoy usando para llenar una lista personalizada en un cuadro de diálogo. estoy usando un cursor pero también se puede utilizar un ArrayAdapter o lo que sea de su agrado:

Dialog aDialog = new Dialog(this); 
AlertDialog.Builder bDialog = new AlertDialog.Builder(this); 

Cursor books = managedQuery(booksprovider.CONTENT_URI_BOOKS, null, null, null, null); 
ListView booksToAdd = new ListView(this); 
SimpleCursorAdapter books_list = new SimpleCursorAdapter(this, R.layout.shelves_add, books, 
    new String[] { BOOKS_TITLE, BOOKS_AUTHOR },//columns to include in view 
    new int[] { R.id.search_results_title, R.id.search_results_author });//views to bind columns to 

booksToAdd.setAdapter(books_list); 
bDialog.setView(booksToAdd); 

bDialog.setPositiveButton("Add to Shelf", new DialogInterface.OnClickListener() { }); 
aDialog = bDialog.create(); 
0
AlertDialog.Builder builder = new AlertDialog.Builder(this); 
       String[] name = new String[] {"item1","item2"}; 
     builder.setItems(name, new OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       switch(which){ 
           case 0: 
        //click item 1 
      break; 
     case 1: 
//click item 2 
break; 
            } 

      } 
     }); 
     builder.show(); 
-1

Estoy llamando cuadro de diálogo en el diálogo aquí es mi código ..

intenta esto:

public class AddTimerDialog extends DialogFragment { 

    AlertPositiveListener alertPositiveListener; 

    interface AlertPositiveListener { 
     public void onPositiveClick(int position); 
    } 

    public void setPositiveClickListener(
      AlertPositiveListener alertPositiveListener) { 
     this.alertPositiveListener = alertPositiveListener; 
    } 

    OnClickListener positiveListener = new OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      AlertDialog alert = (AlertDialog) dialog; 
      int position = alert.getListView().getCheckedItemPosition(); 
      if (alertPositiveListener != null) 
       alertPositiveListener.onPositiveClick(position); 
     } 
    }; 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 

     Bundle bundle = getArguments(); 
     int position = bundle.getInt("position"); 

     AlertDialog.Builder b = new AlertDialog.Builder(getActivity()); 

     b.setSingleChoiceItems(ReminderSnooze.code, position, null); 

     b.setPositiveButton("OK", positiveListener); 

     AlertDialog d = b.create(); 

     return d; 
     } 
    } 
0

y llame en ese diálogo que u desea abrir un único cuadro de diálogo de selección .. gerente FragmentManager = getFragmentManager();

 /** Instantiating the DialogFragment class */ 
     AddTimerDialog alert = new AddTimerDialog(); 
     alert.setPositiveClickListener(this); 

     /** Creating a bundle object to store the selected item's index */ 
     Bundle b = new Bundle(); 

     /** Storing the selected item's index in the bundle object */ 
     b.putInt("position", position); 

     /** Setting the bundle object to the dialog fragment object */ 
     alert.setArguments(b); 

     /** Creating the dialog fragment object, which will in turn open the alert dialog window */ 
     alert.show(manager, "alert_dialog_radio"); 
Cuestiones relacionadas