2011-10-14 7 views
10

Sto usando un listview con un adattatore personalizzato in un layout. Ora sto provando a portare quel layout contenente la lista al mio alertdialog. Ho cercato di portare con questo codice layout semplici che non contengono elenchi di avvisi e funziona correttamente. Ma non riesco a portare l'elenco contenente il layout in alertdialog.Come può gonfiare un layout contenente listview in una finestra di avviso?

  AlertDialog.Builder dialog = new AlertDialog.Builder(this); 
      dialog.setView(getLayoutInflater().inflate(R.layout.smill, null)); 
      dialog.setIcon(R.drawable.androidsmile); 
      dialog.setInverseBackgroundForced(true); 


      dialog.setTitle("Select smiley"); 
      dialog.setPositiveButton("Cancel", null); 
      dialog.show(); 
+1

è possibile elaborare ciò che di sbagliato accadendo con l'applicazione? obbliga a chiudere o listview non viene mostrato o altro. –

risposta

14

Tutto quello che stai facendo è gonfiare una vista nella vostra finestra di dialogo avviso. Non stai impostando l'adattatore su tale listview, quindi ovviamente non funzionerà (dato che è vuoto).

Hai bisogno di fare qualcosa di simile:

View view = getLayoutInflater().inflate(R.layout.smill, null) 
ListView listView = (ListView) view.findViewById(R.id.listView); 
YourCustomAdapter adapter = new YourCustomAdapter(parameters...); 
listView.setAdapter(adapter); 

AlertDialog.Builder dialog = new AlertDialog.Builder(this); 
dialog.setView(view); 
... 
... 
dialog.show(); 
+2

evitare di passare null come vista radice per il layoutInflater. Se questo viene fatto all'interno del tuo adattatore puoi passare a rootview o convertview o qualunque altra vista stia ospitando questa finestra di avviso – Odaym