2011-10-14 16 views
10

Używam widoku listy z niestandardowym adapterem w układzie. Teraz próbuję wprowadzić tę listę zawierającą mój alert alertu. Próbowałem wprowadzić proste układy nie zawierające listy do okna dialogowego alertu z tym kodem i działa dobrze. Ale nie mogę przenieść listy zawierającej układ do alertdialog.W jaki sposób można nadmuchać układ zawierający widok listy w oknie dialogowym alertu?

  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

można opracować, co złego dzieje się z aplikacji? powoduje wymuszenie zamknięcia lub wyświetlanie listy nie jest wyświetlane lub cokolwiek innego. –

Odpowiedz

14

Wszystko, co robisz, to nadmuchanie widoku w oknie dialogowym alertu. Nie ustawiasz adaptera na tym liście, więc oczywiście wygląda na to, że nie działa (ponieważ jest pusty).

Trzeba zrobić coś takiego:

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

unikaj przekazywania wartości NULL jako widoku głównego dla layoutInflater. Jeśli odbywa się to w twoim adapterze, możesz przekazać widok root-a lub convertview lub dowolny widok, w którym znajduje się to okno dialogowe alertu – Odaym