2011-10-14 1 views
10

J'utilise une listview avec un adaptateur personnalisé dans une mise en page. Maintenant j'essaye d'apporter cette disposition contenant la liste à mon alertdialog. J'ai essayé d'apporter des mises en page simples ne contenant pas la liste pour alerter le dialogue avec ce code et son fonctionne bien. Mais je suis incapable de mettre la liste contenant la disposition dans alertdialog.Comment gonfler une mise en page contenant listview dans une boîte de dialogue d'alerte?

  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

pouvez-vous expliquer ce qui se passe mal avec votre application? force-t-il la fermeture ou la liste n'est pas affichée ou quoi que ce soit d'autre. –

Répondre

14

Tout ce que vous faites gonfle une vue dans votre boîte de dialogue d'alerte. Vous ne définissez pas l'adaptateur sur cette liste, donc bien sûr, il semble ne pas fonctionner (puisque c'est vide).

Vous devez faire quelque chose comme:

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

évitez de passer null comme la vue racine pour le layoutInflater. Si cela est fait à l'intérieur de votre adaptateur, vous pouvez passer rootview ou convertview ou quelle que soit la vue qui héberge cette boîte de dialogue d'alerte – Odaym

Questions connexes