2017-12-07 3 views
0

Ich bin neu auf Android Studio und ich habe ein kleines Problem. Ich möchte ein Dialogfeld mit einigen Optionen aus einer ArrayList (Teilnehmer in meinem Code) auswählen, aber wenn ich triying, um diesen Dialog zu öffnen die App einfach aufhören, Was mache ich falsch?Mein Dialog mit einer Liste funktioniert nicht

final AlertDialog.Builder builder = new AlertDialog.Builder(Paiements.this); 
builder.setTitle("Qui a payé ?"); 
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(Paiements.this, android.R.layout.simple_list_item_1, participantsShare); 

builder.setAdapter(arrayAdapter, new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int item) { 
     participant.setText(participantsShare.get(item)); 
     dialog.cancel(); 
    } 
}); 

AlertDialog dialog = builder.create(); 
dialog.show(); 

(participantsShare ist ein ArrayList<String> und Teilnehmer ist ein EditText)

+1

Warum nicht DialogFragment? –

Antwort

0

Verwenden Sie diesen Code, um eine Liste im Dialog zeigt.

AlertDialog.Builder builderSingle = new AlertDialog.Builder(DialogActivity.this); 
builderSingle.setIcon(R.drawable.ic_launcher); 
builderSingle.setTitle("Select One Name:-"); 

final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(DialogActivity.this, android.R.layout.select_dialog_singlechoice); 
arrayAdapter.add("Hardik"); 
arrayAdapter.add("Archit"); 
arrayAdapter.add("Jignesh"); 
arrayAdapter.add("Umang"); 
arrayAdapter.add("Gatti"); 

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); 
       AlertDialog.Builder builderInner = new AlertDialog.Builder(DialogActivity.this); 
       builderInner.setMessage(strName); 
       builderInner.setTitle("Your Selected Item is"); 
       builderInner.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
          @Override 
          public void onClick(DialogInterface dialog,int which) { 
           dialog.dismiss(); 
          } 
         }); 
       builderInner.show(); 
      } 
     }); 
builderSingle.show(); 
+0

ok es funktionierte für mich danke :) wieso muss der ArrayAdapter endgültig sein? – Otnax

+0

Es ist nicht zwingend erforderlich, ArrayAdapter final bro zu machen. Bitte upvote und markieren Sie die richtige Antwort, wenn Sie können. – Khemraj