0

J'ai créé une boîte de dialogue qui affiche une liste d'éléments.Alerteurs multiples d'Alertdialog

Maintenant, je dois également attraper les événements de clic long à des fins d'édition.

Comment cela peut-il être archivé?

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle(R.string.select_a_person); 
    final UserAdapter adapter = new UserAdapter(this); 
    builder.setAdapter(adapter, new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      selecteduUser = (User) adapter.getItem(which); 
      if (selecteduUser != null) { 
       mName.setText(selecteduUser.getName()); 
      } 
     } 
    }); 
    builder.create().show(); 

Répondre

0

actuellement je vois deux solutions

Option 1:

créer votre propre dialogue personnalisée. créer une activité avec vue en liste (ou listactivity ce que vous préférez) et définir son thème en tant que boîte de dialogue.

android:theme="@android:style/Theme.Dialog" 

Vous pouvez facilement gérer les éléments de liste. Ensuite, au démarrage de cette activité de boîte de dialogue personnalisée, transmettez les données de la liste que vous souhaitez afficher.

Option 2:

mis setOnShowListener dans votre AlertDialog dans votre démarche. permettez-moi de modifier à partir de votre dernière ligne de code

AlertDialog dialog = builder.create(); 

dialog.setOnShowListener(new OnShowListener() 
{  
    @Override 
    public void onShow(DialogInterface dialog) 
    {  
     ListView list = ad.getListView(); 
     list.setOnItemLongClickListener(new OnItemLongClickListener() 
     { 
      @Override 
      public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) 
      { 
       // DO your task 
       return true; 
      }   
     });  
    } 
}); 
dialog.show();