2016-07-31 22 views
2

Ich verwende einen Alarmdialog, der ein Menü am Anfang der App anzeigt. Ich möchte, dass der Dialog 2 Werte anzeigt, die "Namen" von einem Objekt sind. Hier ist der Code des Alarms Dialog:Liste in AlertDialog anzeigen

public void showDialog() { 

    EntityType en = new EntityType(); 
    ArrayList array = ApplicationController.entities; 

    final AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("Pick one"); 
    builder.setItems(array, new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      // I want to write my code here 
     } 
    }); 

    builder.show(); 
} 

EntityType ist mein Objekt, das eine Zeichenfolge "Name" enthalten und ApplicationController.entities enthält das Array

Antwort

1
public void showDialog() { 

    EntityType en = new EntityType(); 
    ArrayList array = ApplicationController.entities; 

    final AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("Pick one"); 
    ArrayList<String> displayValues=new ArrayList<>(); 
     for (Entity entity : array) { 
     displayValues.add(entity.name); 
     } 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,array); 
     final AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle("Pick one"); 
     builder.setSingleChoiceItems(displayValues, 0, new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      Entity selectedItem = array[which]; 
     } 
     });  


    builder.show(); 
} 
0

Sie haben eine ArrayAdapter halten Ihre EntityType Namen erstellen und das Hinzufügen von ihnen zu ihm:

ArrayAdapter<String> adapt = new ArrayAdapter<String>(this, android.R.layout.select_dialog_singlechoice); 
adapt.add("your entity name"); 

dann im Dialog:

builder.setAdapter(adapt, new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int item) { 
      //Your code here 
     } 
    }); 

Hope it

1
ArrayAdapter<String> adapt = new ArrayAdapter<String>(this, android.R.layout.select_dialog); 
adapt.add("your entity name"); 

dann bearbeiten diaolog Code hilft:

builder.setAdapter(adapt, new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int item) { 
      //write code here 
     } 
    }); 
3

den Code unten versuchen .. es funktioniert für mich. .. :)

AlertDialog.Builder builderSingle = new AlertDialog.Builder(MainActivity.this); 
    builderSingle.setIcon(R.drawable.green_tick_add); 
    builderSingle.setTitle("Choose.."); 

    final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.select_dialog_item); 
    arrayAdapter.add("Change Photo"); 
    arrayAdapter.add("Remove Photo"); 

    builderSingle.setNegativeButton("cancel", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.dismiss(); 
     } 
    }); 

    builderSingle.setAdapter(arrayAdapter, new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      String strName = arrayAdapter.getItem(which); 

     } 
    }); 
    builderSingle.show();